Django 如何使用提交一对多表单
我有一份在现场工作的员工名单。每个站点都由一个用户拥有(使用Django的标准用户模型) 我想创建一个表单,添加一名员工,并根据身份验证用户的身份自动将他们链接到一个站点: models.py:Django 如何使用提交一对多表单,django,django-models,django-forms,django-admin,django-views,Django,Django Models,Django Forms,Django Admin,Django Views,我有一份在现场工作的员工名单。每个站点都由一个用户拥有(使用Django的标准用户模型) 我想创建一个表单,添加一名员工,并根据身份验证用户的身份自动将他们链接到一个站点: models.py: class Employee(models.Model): site = models.ForeignKey(Site, null=True) employee_name = models.CharField(default='name', max_length=128, blank=F
class Employee(models.Model):
site = models.ForeignKey(Site, null=True)
employee_name = models.CharField(default='name', max_length=128, blank=False, null=False)
class Site(models.Model):
user = models.ForeignKey(User)
site_name = models.CharField(max_length=128, blank=False, null=False)
views.py:
site_profile = Site.objects.get(user=request.user)
if request.method == "POST":
form = EmployeeAddForm( request.POST )
if form.is_valid():
obj = form.save(commit=False)
obj.site = site_profile
obj.save()
return redirect('dashboard_home')
form = EmployeeAddForm()
return render(request, "dashboard/employees.html", {'form': form })
forms.py:
class EmployeeAddForm(forms.ModelForm):
class Meta:
model = Employee
fields = ( 'employee_name')
此代码会将员工添加到数据库中,但在django admin中,list\u display='site'
会生成site object
而不是实际的站点名称。员工似乎没有链接到该网站
如果我使用
obj.site=site\u profile.id
(添加.id
),我会得到错误无法分配“1”:“Employee.site”必须是“site”实例。
发现错误:上面的代码是正确的,我只是在我的站点模型中有一个选项卡排序错误
class Site(models.Model):
...
def __str__(self):
return self.site_name
def
应该插入1个标签。我不太清楚。每个特定站点都是从site类创建的对象。在django admin中,@Alain,list\u display='site'
生成的是站点对象
而不是实际的站点名称。该员工似乎没有链接到该网站。@Alain请查看更新的问题