gpt4 book ai didi

Django多表继承: specify custom one-to-one column name

转载 作者:行者123 更新时间:2023-12-03 17:03:21 24 4
gpt4 key购买 nike

我正在尝试创建一个与现有 data model 兼容的 Django ORM 映射。 ,所以我正在尝试使用现有的一组表名和列名。

我有一个多表继承情况,其中类 InformationObject 派生自类 Object。我想让 Django 以通常的方式处理这个问题:

class Object(models.Model):
class Meta:
db_table = "object"

class InformationObject(Object):
class Meta:
db_table = "information_object"

在这种情况下,Django 会自动在继承模型上创建一个一对一的字段,称为 。 object_ptr_id .但是,在我被限制使用的架构上,对 Object 的引用简称为“id”。所以:

有没有办法以某种方式指定 Django 自动神奇地用于多表继承的列的名称?

否则我将不得不使用的替代方法是使用显式的一对一字段,但是我将无法从 Object 模型继承非数据库方法:
class Object(models.Model):
class Meta:
db_table = "object"

class InformationObject(models.Model):
class Meta:
db_table = "information_object"
id = models.OneToOneField(Object, primary_key=True, db_column="id")

有任何想法吗?也许我可以为它们创建一个公共(public)基类并将非数据库方法放在那里......?

最佳答案

来自 django docs (开发版):

As mentioned, Django will automatically create a OneToOneField linking your child class back any non-abstract parent models. If you want to control the name of the attribute linking back to the parent, you can create your own OneToOneField and set parent_link=True to indicate that your field is the link back to the parent class.

关于Django多表继承: specify custom one-to-one column name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7269319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com