如何在 Django 多表继承中将现有父项与子项相关联

how to associate existing parent with child in django multitable inheritance

我有一个包含许多现有记录的现有父实体:

class Entity(models.Model):
    name = models.CharField('Name', max_length=64, db_index=True) 

我还有使用 django multi table 继承扩展的子对象:

class Investor(Entity):
    investor_name = models.CharField(max_length=255)

我想创建可能存在的实体的新投资者对象。

如何将投资者与现有实体相关联并创建?

你不能这样做,因为

multi-table inheritance uses an implicit OneToOneField to link the child and the parent

这意味着 Entity 命名记录与相应的子类 Investor 模型之间存在一对一的关系。 Django 只是处理它从多个 table 到单个模型的转换,因此您不会真正注意到它。

所以当你创建一个 Investor 时你必须写下面这行

Investor.objects.create(investor_name ='jone', name='entity name')

这将创建一个 Investor table 行,该行与具有一对一关系的 Entity 行相关联。因此,如果您想使用现有的 Entity 记录创建一个新的 Investor 对象,那么数据库 one-to-one 将发生关系冲突,到目前为止 Django 中没有任何其他用于多重继承的关联语法。 更多详情请见this link

如果您的数据库设计如下所示,您可以使用现有的实体模型记录:

class Investor(models.Model):
  entity = model.ForeignKey(Entity) // Many-to-One relationship
  investor_name = models.CharField(max_length=255)

我找到了一种方法,您可以这样做:

child = Restaurant(place_ptr=place)
child.save_base(raw=True)

您可以在此处查看完整主题:https://code.djangoproject.com/ticket/7623