2011-06-09 37 views
3

this SO question我看到以下內容:這是如何django做單表繼承?

class MediaContent(models.Model): 
    uploader = models.ForeignKey(User) 
    title = models.CharField(max_length=100) 
    created = models.DateTimeField(auto_now_add=True) 

    def draw_item(self): 
     pass 

    class Meta: 
     abstract = True 

class Picture(MediaContent): 
    picture = models.ImageField(upload_to='pictures') 

class Video(MediaContent): 
    identifier = models.CharField(max_length=30) #youtube id 

我以前做過一些STI在Rails的,但從來沒有在Django。這是如何在Django中完成的?它只會創建一個包含所有模型中所有字段的表格嗎?它會添加一個類型列嗎?

+0

縮寫「STI」沒有被廣泛使用在Django的世界(似乎很大程度上是Rails的ISM)。如果你在問題標題中完整地拼出了它,情況會更加清楚。 – 2011-06-09 08:51:53

+0

對不起,我在標籤中拼寫完整。我認爲這就夠了。我將編輯標題。 – Geo 2011-06-09 09:28:04

回答

3

將會創建兩個表格,一個用於圖片,另一個用於視頻。無法創建返回兩種類型的查詢。

"Abstract base classes"

+0

並且這兩個表也將具有在MediaContent中定義的字段? – Geo 2011-06-09 07:38:41

+0

加上特定類中定義的字段,是的。 – 2011-06-09 07:39:13

+0

另請參閱:http://code.google.com/p/django-polymorphic-models/以及類似的用於跨模型繼承鏈查詢的方法。 – 2011-06-09 08:52:49