我以学院用户身份登录我的应用程序,我必须保存学生详细信息。 学生模型有一个列作为FK到学院模型。
institute = models.ForeignKey('institute.InstituteDetailsModel', to_field="sys_id", on_delete = models.SET_NULL, null=True, blank=True)
每次我注册学生时,我都必须点击数据库以获取学院实例并在保存学生详细信息时使用它。在做其他事情时,许多地方都会出现这种数据库攻击情况。
为了避免每次我尝试做以下事情时击中DB:
在登录时从数据库获取学院实例和
1.使用model_to_dict将其转换为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'
。只检索和存储机构模式实例一次的最佳方法是什么,并将eveytime用作外键而不用DB?
答案 0 :(得分:0)
这会有所帮助。
Models.objects.filter().select_related('foreign_key1','foreign_key2')