当前位置:  开发笔记 > 编程语言 > 正文

使用Django Abstract Class创建关系并继承该类会因某种原因创建两个反向关系

如何解决《使用DjangoAbstractClass创建关系并继承该类会因某种原因创建两个反向关系》经验,为你挑选了0个好方法。

这是我的模特:

class Post(models.Model):
    owner = models.ForeignKey(User, related_name="%(app_label)s%(class)s_set")
    post = models.CharField(max_length=400)

    class Meta:
        abstract = True


class DS(Post):
    location = models.ForeignKey(Location, blank=True, null=True, related_name="%(app_label)s%(class)s_set")

    class Meta(Post.Meta):
        abstract = True

class S(DS):
    # same as DS
    pass

现在,当我打开Python shell并执行此操作时:

a = User.objects.get(username='a')
dir(a)

然后这两个出现:

['myapps_set', 's_set']

当我这样做时:

a.s_set.all()

它返回一个S对象,但是当我这样做时:

a.myapps_set.all()

它返回三个S对象(它返回的第一个S对象与我返回的对象相同a.s_set.all().我的两个问题是,

1)为什么即使我特意做了owner = models.ForeignKey(User, related_name="%(app_label)s%(class)s_set"),s_set也可以用用户对象访问?

2)为什么他们会返回两组不同的对象(即如何myapps_set.all()返回3(正确的答案)而s_set.all()只返回一个?

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有