Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何使用提交一对多表单_Django_Django Models_Django Forms_Django Admin_Django Views - Fatal编程技术网

Django 如何使用提交一对多表单

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

我有一份在现场工作的员工名单。每个站点都由一个用户拥有(使用Django的标准用户模型)

我想创建一个表单,添加一名员工,并根据身份验证用户的身份自动将他们链接到一个站点:

models.py:

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请查看更新的问题