如何使用提交一对多表格

时间:2015-07-14 18:05:58

标签: django django-models django-forms django-admin django-views

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

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

models.py:

data

views.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)

forms.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 })

此代码会将员工添加到数据库,但在django admin中,class EmployeeAddForm(forms.ModelForm): class Meta: model = Employee fields = ( 'employee_name') 导致list_display = 'site'不是实际的站点名称。员工似乎没有链接到该网站。

如果我使用Site object(添加obj.site = site_profile.id),则会收到错误.id

1 个答案:

答案 0 :(得分:0)

发现错误:上面的代码是正确的,我只是在我的网站modeL

中有一个标签排序错误
class Site(models.Model):
...

def __str__(self):
    return self.site_name

def应该已插入1个标签页。