2010-09-21 83 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

從來沒有使用過它,但爲什麼你不試試它? – 2010-09-21 08:19:25

+0

我今天花了兩個小時試圖讓它工作...我非常困惑。 – Rich 2010-09-21 13:28:27

回答

0

GenericInlineFormSet的工作原理與標準inline formset一樣,只是它使用泛型關係而不是標準外鍵。

+1

當然,這解釋了爲什麼它被稱爲它是什麼!那麼你會如何爲上面的例子創建一個? – Rich 2010-09-21 13:30:37

+0

這顯然是不真實的。每個源代碼顯示genericInlineFormset不使用InlineFormset工作的參數。有多種情況,但對於InlineFormset,您可以設置''save_as_new'',即使它在參數列表中顯示,您也不能爲GenericInlineFormset進行設置。它從字面上看不會與變量有關。 – 2013-02-02 13:03:04