首页 > 解决方案 > 保存外键对象 django 表单

问题描述

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

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

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

模型.py

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

表格.py

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

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

视图.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()

标签: pythondjangodjango-modelsdjango-viewsdjango-forms

解决方案


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

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


推荐阅读