В Джанго, приведены выдержки из приложения животные likeso:
A animal / models.py с:
from django.db import models
from django.contrib.contenttypes.models import ContentType
class Animal(models.Model):
content_type = models.ForeignKey(ContentType,editable=False,null=True)
name = models.CharField()
class Dog(Animal):
is_lucky = models.BooleanField()
class Cat(Animal):
lives_left = models.IntegerField()
И животных / urls.py :
from django.conf.urls.default import *
from animals.models import Animal, Dog, Cat
dict = { 'model' : Animal }
urlpatterns = (
url(r'^edit/(?P<object_id>\d+)$', 'create_update.update_object', dict),
)
Как можно использовать общие представления для редактирования собак и / или кошек, используя одну и ту же форму?
т.е. Объект form , который передается в animals / animal_form.html , будет Animal и, следовательно, не будет содержать никаких специфических особенностей для производных классов Dog и Cat. Как сделать так, чтобы Django автоматически передавал форму для дочернего класса в animal / animals_form.html ?
Кстати, я использую Djangosnippets # 1031 для управления ContentType, поэтому у Animal будет метод с именем as_leaf_class , который возвращает производный класс.
Очевидно, что можно создавать формы для каждого производного класса, но это довольно много ненужного дублирования (так как все шаблоны будут общими - по сути, {{form.as_p}}).
Кстати, лучше предположить, что Animal, вероятно, будет одним из нескольких несвязанных базовых классов с той же проблемой, поэтому идеальное решение будет общим.
Заранее спасибо за помощь.