2011-06-09 33 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