Django: URL-Parameter in CBV CreateView
Verfasst: Samstag 23. Juli 2016, 14:00
Hallo,
ich habe ein (Verständnis-) Problem bei Djangos CBV. Und zwar würde ich gerne ich gerne für eine CreateView ein zusätzliches Parameter in der URL mit übergeben. Anhand des Parameters soll dann das Model festgelegt werden.
Kleines Beispiel:
models.py
urls.py:
views.py:
Als Fehlermeldung kommt dann, dass `detail` in `DetailCreate` nicht bekannt ist (was ja auch irgendwie logisch ist...)
Frage: Wie komme da dran? Mir ist nicht klar, wie ich auf die URL-Parameter innerhalb der Klasse zugreifen kann. Oder geht das nicht in einer CBV?
Ich gehe auch davon aus, dass das irgendwo dokumentiert ist. Nur finde ich das nicht (oder ich hab's gefunden und nicht verstanden...)
Gruß, noisefloor
ich habe ein (Verständnis-) Problem bei Djangos CBV. Und zwar würde ich gerne ich gerne für eine CreateView ein zusätzliches Parameter in der URL mit übergeben. Anhand des Parameters soll dann das Model festgelegt werden.
Kleines Beispiel:
models.py
Code: Alles auswählen
from django.db import models
class Customer(models.Model):
customer = models.CharField('Customer Name')
class FB(models.Model):
for_customer = models.ForeignKey('Customer')
make = models.CharField('Manufacturer')
class Contact(models.Model):
for_customer = models.ForeignKey('Customer')
name = models.CharField('Name')
tel_no = models.IntegerField('Phone Number')
Code: Alles auswählen
from django.conf.urls import url
from whw import views
urlpatterns = [
...
url(r'(?P<pk>\d{1,5})/add/(?P<detail>(customer|fb>))/$', views.DetailCreate.as_view(), name='add-detail'),
]
Code: Alles auswählen
...
from django.views.generic.edit import CreateView
from whw.models import Contact, FB
...
class DetailCreate(CreateView):
if detail == 'fb':
model = FB
fields = ['make']
elif detail == 'contact':
model = Contact
fields = ['name', 'tel_no']
template = 'detail_form.html'
Als Fehlermeldung kommt dann, dass `detail` in `DetailCreate` nicht bekannt ist (was ja auch irgendwie logisch ist...)
Frage: Wie komme da dran? Mir ist nicht klar, wie ich auf die URL-Parameter innerhalb der Klasse zugreifen kann. Oder geht das nicht in einer CBV?
Ich gehe auch davon aus, dass das irgendwo dokumentiert ist. Nur finde ich das nicht (oder ich hab's gefunden und nicht verstanden...)
Gruß, noisefloor