gpt4 book ai didi

python - OneToOneField 中的 Django 模型字段

转载 作者:行者123 更新时间:2023-11-30 22:52:15 25 4
gpt4 key购买 nike

我有两个模型:

class FirstModel(models.Model):
foo = models.IntegerField(default=0)
class SecondModel(models.Model):
bar = models.OneToOneField(FirstModel, on_delete=models.CASCADE, primary_key=True)

如何创建来自 FirstModel.foo 的变量 baz

我希望它像这样简单:

class SecondModel(models.Model):
bar = models.OneToOneField(FirstModel, on_delete=models.CASCADE, primary_key=True)
baz = bar.foo

最终目标:SecondModel 实例获取 foo,例如 second_model_instace.foo

最佳答案

您可以使用related_name在向后引用的链接模型中:

class FirstModel(models.Model):
foo = models.IntegerField(default=0)


class SecondModel(models.Model):
bar = models.OneToOneField(
FirstModel,
related_name='baz',
on_delete=models.CASCADE,
primary_key=True
)

现在,如果链接存在,您可以通过 first_model_intance.baz 进行访问,否则您将收到 DoesNotExsist 异常。 default是:

If you do not specify the related_name argument for the OneToOneField, Django will use the lower-case name of the current model as default value.

更新:如果你想获得second_model_instace.foo,你甚至不需要lated_name(向后引用)。它是前向引用,这已经是明确的。首先获取first_model(通过OneToOne Field),然后获取其属性foo,即:

second_model_instance.bar.foo

关于python - OneToOneField 中的 Django 模型字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38669253/

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