【问题标题】:Derived model assignment in DjangoDjango中的派生模型分配
【发布时间】:2018-09-19 15:45:37
【问题描述】:

考虑从模型A派生的Django模型B

class A(models.Model):
    # ...

class B(A):
    # ...

现在让模型C引用A

class C(models.Model):
    a = models.ForeignKey('A')

让我们有一个对象c,属于C

c.a = b(其中bB 类的对象)会做正确的事情,分配A 的主键而不是B

【问题讨论】:

  • 当你测试这个时,你发现了什么?
  • @dfundako 这个问题不仅针对我自己,也针对其他 SO 读者。所以即使我自己测试了这个问题也值得回答
  • 您可以自行回答自己的帖子。
  • 我认为这是一个测试题,实际上没有经过测试......
  • @Douglas 同意。所有的代码都在那里,还有一个关于会发生什么的简洁问题。这应该非常容易重现和测试。

标签: python django django-models


【解决方案1】:

A 及其派生模型B 具有相同的主键,因为它实现为OneToOneField

所以问题是A还是B的主键没有意义,AB的主键值相同。

简而言之:c.a = b 的赋值按预期工作,因为b 只需要考虑一个主键。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-05
    • 2013-05-01
    • 1970-01-01
    • 2020-03-17
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多