Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在django多任务继承中将现有父级与子级关联_Django_Django Inheritance - Fatal编程技术网

如何在django多任务继承中将现有父级与子级关联

如何在django多任务继承中将现有父级与子级关联,django,django-inheritance,Django,Django Inheritance,我有一个现有的母公司实体,拥有许多现有记录: class Entity(models.Model): name = models.CharField('Name', max_length=64, db_index=True) 我还有使用django多表继承进行扩展的子对象: class Investor(Entity): investor_name = models.CharField(max_length=255) 我想创建新的投资者对象,可能是现有实体 如何将投资者与现

我有一个现有的母公司实体,拥有许多现有记录:

class Entity(models.Model):
    name = models.CharField('Name', max_length=64, db_index=True) 
我还有使用django多表继承进行扩展的子对象:

class Investor(Entity):
    investor_name = models.CharField(max_length=255)
我想创建新的投资者对象,可能是现有实体


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

您不能这样做,因为

多表继承使用隐式OneToOneField链接子表和父表

这意味着实体命名记录与相应的子类投资者模型之间存在一对一的关系。Django只处理从多个表到单个模型的转换,所以您不会真正注意到它

因此,当你创建一个投资者时,你必须写下以下几行

Investor.objects.create(investor_name ='jone', name='entity name')
这将创建与具有一对一关系的实体行关联的投资者表行。因此,如果您想使用现有的实体记录创建一个新的投资者对象,则会发生数据库一对一关系冲突,并且到目前为止,Django中没有任何其他用于多重继承的关联语法。 有关更多详细信息,请参见

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

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)

您可以在此处查看完整的线程:

除时间自动字段外,它可以工作:您必须手动添加它们(=它们的值不是自动生成的)