简体   繁体   English

在 Django CreateView 中保存反向外键

[英]Save reverse Foreign Key in Django CreateView

I have these 2 models:我有这两个模型:

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"))
    ...

I want to automatically fill the company field when using Django's CreateView based on the current logged-in user.我想在使用基于当前登录用户的 Django 的CreateView时自动填充company字段。 Because every Company model has a ForeignKey relationship with User .因为每个Company模型都与User有一个ForeignKey关系。 So I override the form_valid method, but how can I get the correct value here for the company field?所以我覆盖了 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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM