Aynı temel sınıftan miras alınan bir dizi model için formları işlemek için genel CreateView sınıfı kullanmaya çalışıyorum. KURU şeyleri tutmak için Django: parametrik sınıf tabanlı görünümler
class BaseContent(models.Model):
...
class XContent(BaseContent):
...
class YContent(BaseContent):
...
, ben BaseContent tüm kalıtsal sınıfları idare edecek bir CreateView sınıfını tanımlamak istiyorum.
o görünüm için url kalıptır:
class ContentCreateView(CreateView):
template_name = 'content_form.html'
def get_model(self, request):
# 'content' is the name of the application; model_name is 'xcontent', 'ycontent', ...
return ContentType.objects.get_by_natural_key('content', self.model_name)
Ama bu istisna alıyorum: Böyle
url(r'^content/add/(?P<model_name>\w+)/$', ContentCreateView.as_view(), name='content_add')
şey çalışmalıdır
ContentCreateView is missing a queryset. Define ContentCreateView.model, ContentCreateView.queryset, or override ContentCreateView.get_object().
Bu öneri yok model
veya queryset
t gibi bir sınıf özniteliği ayarlamak istemediğimden o modelin oluşturduğu formu dinamik tutun. get_object
'u geçersiz kılmak bir nesne oluşturmakla alakalı görünmüyor.
get_queryset()
'u geçersiz kılmayı denedim, ancak bu yöntem request
parametresini kabul etmiyor ve URL modelinden gelen self.model_name
erişimini de içermiyor.
Uzun lafın kısası, bir CreateView url'den alınan bir parametreye dayalı olarak dinamik bir form nasıl kullanabilirim?
Teşekkürler.
ben bu isteği düşünmek ve kendini olabilir böylece MODEL_NAME, örnek değişkenler olarak ayarlanmış: Böyle gönderme as_view (tanımlanan yöntem) (django.views.generic.base), bir şey geçersiz kılmak gerekir .Request ve self.model_name get_queryset() yönteminin içinde. Bu düşünceyi denemedim. – bmihelac
Evet, CreateView öğesinin ataları olan görünüm sınıfı, kwargs'i url'den örnek değişkenleri olarak ayarlar. ama 'self.model_name', 'self.request 'iken başka bir karışımdan geldiği için get_queryset()' için erişilemez. Eğer model ismini 'get' parametresi olarak geçersem, istediğimi yapabilirim ama güzel olmaz. imo, kalıtımın ve karıĢımların sınıf temelli görünümlerde ve dokümantasyon eksikliğinde nasıl organize edildiğini, sınıf yöntemlerini ve özniteliklerini izlemesi çok zor hale getirir. – omat
Her model için form sınıfları oluşturabilir ve istek modellerini temel alan görünüm için ilgili formu almak için 'ModelFormMixin' türündeki get_form_class yöntemine binemez misiniz? Son çare olarak – vimukthi