我想在用户提交创建表单时自动将公司名称呈现到数据库中......
这是我的模型:
class company(models.Model):
User = models.ForeignKey(User,related_name="Company_Owner",on_delete=models.CASCADE,null=True,blank=True)
Name = models.CharField(max_length=50,blank=False)
class group1(models.Model):
User = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,null=True,blank=True)
group_Name = models.CharField(max_length=32)
Company = models.ForeignKey(company,on_delete=models.CASCADE,null=True,blank=True,related_name='Company_group')
这就是我在 views.py 中尝试做的事情:
class group1CreateView(LoginRequiredMixin,CreateView):
form_class = group1Form
template_name = "accounting_double_entry/group1_form.html"
def form_valid(self, form):
form.instance.User = self.request.user
form.instance.Company = company
return super(group1CreateView, self).form_valid(form)
但是出现了这个错误:
ValueError: Cannot assign "<class 'company.models.company'>": "group1.Company" must be a "company" instance.
它对用户有效,但对公司无效。
谁能告诉我我做错了什么???
谢谢...
请您参考如下方法:
错误可能在这一行
form.instance.Company = company
这里是 company 看起来像 Python class , 它应该是 company 的实例类
所以,使用一个对象/实例作为
company_obj = company.objects.create(.....) # created a ne object
form.instance.Company = company_obj
或
company_obj = company.objects.get(id=someid) # fetch new object from db
form.instance.Company = company_obj
除了异常(exception),我们建议您遵循 PEP8 naming convetions在你的代码/项目中
