![](/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.