我有以下模型:Department、Projects、Departmentprojects、Employees 和 Membership。一个部门有许多项目,项目有许多通过成员资格分配角色的员工。我正在尝试创建一个 InlineFormset,以便欧盟可以将员工的角色分配给多个项目。
我的模板呈现正确的标签和字段,但 Departmentprojects 标签和字段不显示项目的名称。它只显示“Departmentprojects 对象”。如何获取表单以呈现项目名称而不是“Departmentprojects 对象”?
--
浏览器中的当前模板:
部门项目标签:(下拉菜单有两个选项列为“部门项目对象”)角色:项目经理
浏览器中所需的模板:
部门项目名称1:项目经理
部门项目名称 2:其他角色
--
楷模:
class Projects(models.Model):
name = models.CharField(max_length=20)
def __unicode__(self):
return self.name
class Department(models.Model):
name = models.CharField(max_length=20)
def __unicode__(self):
return self.name
class Employees(models.Model):
name = models.CharField(max_length=15)
def __unicode__(self):
return self.name
class Departmentprojects(models.Model):
department = models.ForeignKey(Department)
projects = models.ForeignKey(Projects)
members = models.ManyToManyField(Employees, through='Membership')
class Membership(models.Model):
departmentprojects = models.ForeignKey(Departmentprojects)
employees = models.ForeignKey(Employees)
role = models.CharField(max_length=20)
--
看法
def addtoprojects(request, employees_id):
e = get_object_or_404(Employees, pk=employees_id)
ProjectsInlineFormSet = inlineformset_factory(Employees, Membership, max_num=1)
if request.method == "POST":
formset = ContactInlineFormSet(request.POST, instance=e)
if formset.is_valid():
formset.save()
else:
formset = ProjectsInlineFormSet(instance=e)
return render_to_response('gcstest/contact.html', {'e': e, 'formset': formset}, context_instance=RequestContext(request))
--
模板
<form method="post" action="/assign_to_project/{{ employees.id }}/">
{% csrf_token %}
<table>
{{ formset }}
</table>
<input type="submit" value="Submit"/>
</form>