![](/img/trans.png)
[英]In a Django Forms drop-down list, how do I show text accessed via a foreign key?
[英]How to update a value from table accessed via foreign key django ORM
我的数据库模型看起来与此类似
class Leave(models.Model):
available_leaves = models.IntegerField(default = 8)
class Policy(models.Model):
name = models.CharField(max_length=20)
class Student(models.Model):
name = models.CharField(max_length=20)
rating = models.IntegerField(default=7)
class StudentLeave(models.Model):
leave = models.ForeignKey(Leave, on_delete=models.CASCADE)
policy = models.ForeignKey(Policy, on_delete=models.CASCADE)
student = models.ForeignKey(Student, on_delete=models.CASCADE)
我想从这里扣除学生的假期,我试过这个
leave = Leave.objects.filter(pk = 1).first()
policy = Policy.objects.filter(pk = 1).first()
student = Student.objects.filter(name = 'matthew').first()
studentleave = StudentLeave.objects.filter(student = student, policy = policy, leave = leave).first()
现在我有 studentleave object 通过它我可以访问连接到该表的每个表。 所以我尝试访问这个
studentleave.leave.available_leaves-=1 # Tried reducing it by one
print(studentleave.leave.available_leaves) #prints as 7 as expected because 8 is default
但是当我再次访问相同的 model 时,它的值仍然是 8(旧值)我已经尝试了studentleave.leave.update() and studentleave.update()
的更新和保存方法,这基本上是抛出错误,因为 object 没有属性更新
我怎样才能为他们保存这些新值。
提前感谢您花时间解决此问题。
要将更改的数据保存到数据库中,应该使用 model 实例的.save()
方法。 因此,您需要调用studentleave.leave.save()
,这将对数据库执行UPDATE
sql 查询。
您可以使用get
方法通过主键从 db 获取数据。 Get
方法仅从 db 中返回一个值(如果存在)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.