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

losing subclass fields when serializing in django?

在序列化 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": 空, "rght": 2}, "model": "index.mymptttag", "pk": 45}...]

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

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

  • yourapp_mytag 将具有主键列(普通自增列),从 TagBase 继承的所有列(只要 TagBase 是抽象的)和列 user - foreign用户模型的关键
  • yourapp_mymptttag tht 将具有主键列,该列也是 MyTag 模型的外键和 mptt 的列。不会有任何从 MyTag.
  • 继承的列

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

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