簡體   English   中英

Django可以訪問views.py中當前對象的外鍵

[英]Django get access to foreign key of current object in views.py

我有三個模型:

Class Collection(models.Model):
    var_1 = .....
    var_2 = ....

Class Titles(models.Model):
    var_a = models.ForeignKey(Collection,
    related_name="has_titles", on_delete=models.CASCADE)
    var_b = ...

Class OtherObject(models.Model):
    var_x = models.ForeignKey(Collection,
    related_name="has_other_object", on_delete=models.CASCADE)
    var_y = ...

在 views.py 中,我使用帶有表單的 CBV DetailView(然后使用 formMixin 或 MultipleFormsMixin,但這不是重點)。

所以基本上每個標題都通過外鍵鏈接到集合,每個其他對象也通過外鍵鏈接到集合。

因此,當用戶處於 Title 模型的詳細信息頁面時,他可以填寫表單以添加其他對象,然后該對象將顯示在鏈接到 Title 的 Collection detailView 上。

換句話說,我想要的是當前 Title 的 var_x = var_a :

if form.is_valid():
    new_other_object = form.save(commit=False)
    new_other_object.var_x = HERE I WANT TO GET var_a OF CURRENT OBJECT
    new_other_object.save()

因此,由於 Title 有一個 ForeignKey 包含它所屬的 Collection 的 ID,我嘗試使用諸如 self.get_object() 之類的東西。 我讀過諸如使用 self.get_object().var_a 之類的東西可以工作,但是使用我嘗試過的所有不同解決方案,我都遇到了錯誤,主要是提到該對象必須是 Collection 實例的錯誤。

你將如何實現這一目標?

謝謝。

你只需要做一個查詢集: new_other_object.var_x = Title.objects.get(pk=form['id']) 這樣你就得到了將成為外鍵的對象,然后你插入外鍵字段,然后你保存,應該工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM