【问题标题】:How can I use foreign keys attribute in same model?如何在同一模型中使用外键属性?
【发布时间】:2020-10-06 04:09:21
【问题描述】:

如何在默认情况下使用车辆的属性?

class Orders(models.Model):
    vehicle = models.ForeignKey(Vehicles, on_delete= models.CASCADE)
    exit_km = models.IntegerField(default=vehicle.current_km)

【问题讨论】:

  • 您可以使用查询
  • 您也可以在模型上使用覆盖保存方法,但这会被您针对它运行的任何更新查询集绕过。

标签: django django-models foreign-keys


【解决方案1】:

你可以使用 post_save 信号https://docs.djangoproject.com/en/3.0/ref/signals/#post-save

您可以创建带有 exit_km 默认值的 Order 对象,然后在 post_save 信号方法中,您可以从车辆外键字段中添加 exit_km 的值。

您可以将此问题的答案作为参考。 Django post_save() signal implementation

另一种方法是覆盖模型类的保存方法。

def save(self, *args, **kwargs):
    obj = super().save(*args, **kwargs)
    obj.exit_km = obj.vehicle.exit_km
    obj.save()

【讨论】:

    猜你喜欢
    • 2019-03-18
    • 2020-09-01
    • 2022-12-10
    • 2020-07-03
    • 1970-01-01
    • 2018-12-02
    • 2017-12-01
    • 1970-01-01
    • 2020-09-06
    相关资源
    最近更新 更多