【问题标题】:save foreign key object django forms保存外键对象 django 表单
【发布时间】:2021-01-20 20:39:39
【问题描述】:

我遇到了一个问题,我无法在我的设备上解决它,所以我需要你的帮助。 我正在使用 django 表单保存配置文件对象,它在我的本地系统上运行良好,但是当我将它部署到服务器上时,它给了我一个错误提示:

无法分配“'demo'”:“Profile.company”必须是“Company”实例。

demo 是我从前端获得的公司名称

模型.py

class Profile(models.Model):
      user = models.OneToOneField(User, on_delete=models.CASCADE)
      company = models.ForeignKey(Company,on_delete=models.CASCADE)

Form.py

class ProfileForm(forms.ModelForm):
company = forms.CharField(
    widget=forms.TextInput(
        attrs={
            "placeholder": "Company",
            "class": "form-control"
        }
    ))

class Meta:
    model = Profile
    fields = ('company',)

Views.py

 company = Company.objects.filter(company_name=request.POST["company"]).first()
 form = SignUpForm(request.POST)
 p_form = ProfileForm(request.POST)
 if form.is_valid() and p_form.is_valid():
     u_user = form.save()
     p_form = p_form.save(commit=False)
     p_form.user = u_user
     p_form.company = company
     p_form.save()

【问题讨论】:

    标签: python django django-models django-views django-forms


    【解决方案1】:

    没有关于公司模型/数据库的更多信息,不能 100% 确定此解决方案。但是根据我之前移动项目的经验,您确定您在新数据库服务器上的 Company 模型包含任何对象供您的 company=Company.objects.filter(company_name=request.POST["company"]).first() 返回吗?

    看起来您在views.py 中查询一家名为“demo”的公司,用作您个人资料的ForeignKey。您确定这是返回 Company 的实例吗?

    【讨论】:

    • 我在本地和生产环境中使用相同的 postgres 数据库,是的,我在本地系统上获取公司实例,这意味着我在生产环境中获取公司实例,并且我正在使用相同的数据库。跨度>
    猜你喜欢
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 2012-09-20
    • 2015-10-21
    • 2016-04-22
    • 2022-01-17
    • 2022-01-22
    • 2011-04-26
    相关资源
    最近更新 更多