模型继承不好用

时间:2012-11-21 12:25:48

标签: python django json model

我想要2个模型如下工作: 从Link类继承的Content类。 听起来很简单。 这是我的模型(相关部分):

class Link(models.Model):
     name               = models.CharField(max_length=50)
     slug               = models.SlugField(unique = True)
     level              = models.IntegerField(default='1')
     vectorImage        = models.TextField(blank = True, null=True)
     parent             = models.TextField(default='index')
     def __unicode__(self):
        return self.name
class Content(Link):
     context            = models.TextField()

问题在于,当我创建新内容时,它会单独创建链接并单独创建内容。 所以如果我用JSON转移它:

Links.objects.all ...和Content.objects.all,创建1个内容后:

 [{
        "pk": 1,
        "model": "grid.link",
        "fields": {
            "vectorImage": "",
            "level": 1,
            "name": "logo",
            "parent": "index",
            "slug": "logo"
        }
    }
],
[
    {
        "pk": 1,
        "model": "grid.contexthtml",
        "fields": {
            "context": "html codez"
        }
    }
]

这不是我想要的。我希望它发送完整的内容(如上所述,但使用组合字段)。 我该如何解决?  我

1 个答案:

答案 0 :(得分:4)

使用abstract base class。这对你有用吗?

class BaseLink(models.Model):
     name               = models.CharField(max_length=50)
     slug               = models.SlugField(unique = True)
     level              = models.IntegerField(default='1')
     vectorImage        = models.TextField(blank = True, null=True)
     parent             = models.TextField(default='index')

     def __unicode__(self):
        return self.name

     class Meta:
         abstract = True

class Link(BaseLink):
    pass


class Content(BaseLink):
     context            = models.TextField()