django - 在 Django CreateView 中保存反向外键
问题描述
我有这两个模型:
class Company(models.Model):
...
contact_person = models.ForeignKey(
settings.AUTH_USER_MODEL, on_delete=models.CASCADE, verbose_name=_("Contact person"))
...
class Assignment(models.Model):
...
company = models.ForeignKey('company.Company', null=True, blank=True,
on_delete=models.CASCADE, verbose_name=_("Company"))
...
我想company
在使用 Django 时CreateView
根据当前登录用户自动填充该字段。因为每个Company
模型都ForeignKey
与User
. 所以我重写了 form_valid 方法,但是我怎样才能在这里为 company 字段获取正确的值呢?
class AssignmentCreateView(generic.edit.CreateView):
def form_valid(self, form):
instance = form.save(commit=False)
instance.company = self.request.user
super(AssignmentCreateView, self).save(form)
解决方案
def form_valid(self, form):
company = Company.objects.get(user=self.request.user)
form.instance.company = company
valid_data = super(AssignmentCreateView, self).form_valid(form)
return valid_data
推荐阅读
- c# - 用于类似 EditForm 属性的 Blazor WASM 可重复 RenderFragment
- unreal-engine4 - 宏内的变量
- pandas - 在 Pandas DataFrame 中将 rpy2 的 NALogicalType 识别为 NaN
- google-maps - 如何从谷歌地图 api 中分离出原始评论和翻译评论
- spring - 在 LDAP 中通常如何处理空的用户和组基本 DN
- node.js - 有没有过滤mongodb数据的方法?
- snowflake-cloud-data-platform - 在雪花查询中遇到除以零错误
- oracle - 查找最高平均工资列表,部门明智,同时显示最高平均工资和部门ID
- javascript - ESlint - 错误:必须使用导入来加载 ES 模块
- elasticsearch - jboss-eap 的 Fluentd 正则表达式