在django中序列化时丢失子类字段?

时间:2015-08-16 20:07:29

标签: python json django serialization django-taggit

我看到令人困惑的是,在序列化django对象时看起来很糟糕。例如,我有模特:

class MyTag(TagBase):
    user = models.ForeignKey(User)


class MyMpttTag(MPTTModel, MyTag):
    parent      = TreeForeignKey('self', null=True, blank=True, related_name='children')

    class MPTTMeta:
        parent_attr         = 'parent'

表示MyMpptTag的字段为name, slug, user, parent。但当我做serializers.serialize('json', MyMpptTag.object.all())时,我得到: [{" fields":{" lft":1," level":0," tree_id":29," parent& #34;:null," rght":2}," model":" index.mymptttag"," pk":45}。 ..]

为什么我会失去name, slug, and user,我该如何取回它们?谢谢

1 个答案:

答案 0 :(得分:1)

在该模型设计中,您将在数据库中拥有2个表:

  • yourapp_mytag将具有主键列(正常自动增量列),所有列都继承自TagBase(只要TagBase是抽象的)和列用户 - 外键到模特用户
  • yourapp_mymptttag将拥有主键列,该列也是MyTag模型的外键和mptt的列。不存在从MyTag继承的任何列。

这意味着:模型MyTag中没有从MyMpttTag继承的列,只有MyTag中实际列的引用。

在序列化中,将有两种类型的对象:MyMpttTagMyTag