Nil*_*Kar 1 python django django-models django-forms django-views
我想在用户提交创建表单时自动将公司名称呈现到数据库中...
这是我的模型:
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')
Run Code Online (Sandbox Code Playgroud)
这就是我在 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)
Run Code Online (Sandbox Code Playgroud)
但是得到了这个错误:
ValueError: Cannot assign "<class 'company.models.company'>": "group1.Company" must be a "company" instance.
Run Code Online (Sandbox Code Playgroud)
它对用户有效,但对公司无效。
谁能告诉我我做错了什么???
谢谢...
错误可能在这一行
form.instance.Company = company
Run Code Online (Sandbox Code Playgroud)
这里company看起来像一个Python class,它应该是类的一个实例company
所以,使用一个对象/实例作为
company_obj = company.objects.create(.....) # created a ne object
form.instance.Company = company_obj
Run Code Online (Sandbox Code Playgroud)
或者
company_obj = company.objects.get(id=someid) # fetch new object from db
form.instance.Company = company_obj
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1151 次 |
| 最近记录: |