【问题标题】:model inheriting doesn't work out well模型继承效果不佳
【发布时间】:2012-11-21 12:25:47
【问题描述】:

我希望 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"
        }
    }
]

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

【问题讨论】:

    标签: python django json model


    【解决方案1】:

    使用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()
    

    【讨论】:

    • 我想过,但我认为制作 2 Links 类是愚蠢的。奇怪的。我想这会奏效。我会检查的。
    • 确实感觉很奇怪,但这就是它的用途。
    猜你喜欢
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多