0
我以學院用戶的身份登錄到我的應用程序,並且必須保存學生的詳細信息。 學生模型有一列作爲FK到學院模型。如何避免在Django中每次需要外鍵都要打DB
institute = models.ForeignKey('institute.InstituteDetailsModel', to_field="sys_id", on_delete = models.SET_NULL, null=True, blank=True)
我每次註冊學生時,都必須打開數據庫才能獲得學院實例並在保存學生細節時使用它。在做其他事情時,這種數據庫觸發的情況在許多地方出現。
爲了避免撞上DB每次我試圖做的事情如下:
從數據庫獲取機構實例在登錄時和
1.將其轉換爲使用model_to_dict快譯通(因爲需要系列化問題單獨處理日期)和在會話中存儲。
2.使用django的序列化框架序列化它並存儲在會話中。
但我在上面的方法分別得到以下問題:
1.使用ModelForms保存數據。
data["institute_id"] = request.session["institute"]["id"]
form = StudentForm(data)
該機構出錯「該字段是必填的」。
- 我試圖反序列化保存的對象,但它是類型的發電機,而不是類型模型實例因此得到了錯誤
'generator' object has no attribute 'id
'DeserializedObject' object has no attribute 'id'
和當試圖得到id屬性。
什麼是最好的方式來檢索和存儲研究所模式實例只有一次,並使用它的eveytime作爲外鍵沒有擊中數據庫?
您基本上想要在提取學生模型時獲取學院模型。這可以使用Django的'select_related'。看看這個鏈接:https://stackoverflow.com/questions/31237042/whats-the-difference-between-select-related-and-prefetch-related-in-django-orm –