2010-09-21 3 views
0

Django ContentTypes предоставляет GenericInlineFormSet, однако the documentation не объясняет, как его использовать, за исключением this test, что на самом деле не объясняет это так, как я понимаю.Пожалуйста, помогите мне понять Django GenericInlineFormSet

Пожалуйста, помогите мне понять это?

Скажем, у меня есть следующие классы

class Dog(models.Model): 
    name = models.CharField(max_length=64) 
    breed = models.CharField(blank=True, max_length=64) 

    class Meta: 
     verbose_name = 'Dog' 


class Fish(models.Model): 
    name = models.CharField(max_length=64) 
    habitat = models.CharField(blank=True, max_length=64) 

    class Meta: 
     verbose_name = 'Fish' 


class Pet(models.Model): 
    content_type = models.ForeignKey(
           ContentType, 
           limit_choices_to={'model__in':('dog', 'fish')}, 
           verbose_name='Species' 
           ) 
    object_id = models.CharField(max_length=64, verbose_name='Animal') 
    object = generic.GenericForeignKey('content_type', 'object_id') 

    owner = models.ForeignKey(Owner) 

    class Meta: 
     unique_together = [("content_type", "object_id")] 

Что делает вид выглядеть, чтобы отобразить форму для домашних животных?

+0

Никогда не использовал его, но почему бы вам не попробовать? –

+0

Сегодня я провел два часа, пытаясь заставить его работать ... Я очень смутился. – Rich

ответ

0

GenericInlineFormSet работает как стандартный inline formset, за исключением того, что он использует общие отношения, а не стандартные внешние ключи.

+1

Несомненно, это объясняет, почему это называется, что это такое! Итак, как бы вы создали один из приведенных выше примеров? – Rich

+0

Это явно неверно. Исходный код для каждого показывает, что genericInlineFormset не использует параметры, которые работает InlineFormset. Существует несколько случаев, но для InlineFormset вы можете установить «save_as_new», который вы не можете установить для GenericInlineFormset, хотя он показывает его в списке параметров. Он буквально ничего не делает с этой переменной. –

Смежные вопросы