Django 1.11
我有多个模型与status
具有相同的字段,例如repairOrder,statusUpdate,其状态具有里程表字段。当用户创建新的statusupdate或repairOrder时,我希望它也更新状态模型中的某些字段。我看到它的方式有四个选项
我删除了一些字段以使示例更简单。
class Status(models.Model):
odometer = models.IntegerField()
vehicle = models.ForeignKey(Vehicle, on_delete=models.CASCADE)
...
class statusUpdate(models.Model):
odometer = models.IntegerField()
vehicle = models.ForeignKey(Vehicle, on_delete=models.CASCADE)
...
当用户创建新的stautsUpdate时,我希望设置Status上的里程表。
问:更新相关模型字段的Django方法是什么?
编辑:编辑了很多问题以澄清问题
答案 0 :(得分:0)
状态更新中的里程表字段不需要,因为您已拥有状态模型的外键,因此您可以访问状态模型的每个字段。只需从状态模型中删除里程表,然后当用户执行statusupdate时更新里程表字段。
status_update_instance.odometer = some value
status_update.save()
以上是statusupdate模型的实例
答案 1 :(得分:0)
实际上所有的方式都很好,并且各有利弊。
如果这些型号在不同的应用程序中并且大部分是独立的,那么信号很酷。关于它的好处是它在正常情况下不会打扰你,你会有更多的控制权。
通过覆盖save()方法来做这件事是个好主意,但是如果你不是每次或大部分时间都要这样做,而是在非常特定的时间,那么创建一个不同的方法来调用save( )方法以及做任何你想要的事情。这里的好处是你可以放置尽可能多的条件,尝试捕获异常和if条件,它不会影响保存方法。
你必须找到最适合情况需要的东西。根据我自己的经验和人们的说法,在你不得不使用信号之前不要使用信号。