У меня есть следующие модели: Отдел, Проекты, Проекты Отдела, Сотрудники и Членство. У Департамента есть много Проектов, и у Проектов есть много Сотрудников, которым назначены роли через Членство. Я пытаюсь создать InlineFormset, чтобы ЕС мог назначить роль сотрудника нескольким проектам.
Мой шаблон отображает правильные метки и поля, но в метках и полях Departmentprojects не отображаются названия проектов. Показывает только «объект отдела проекта». Как я могу получить форму для отображения имени проекта вместо "объекта Departmentprojects"?
-
Текущий шаблон в браузере:
Метка Departmentproject: (раскрывающееся меню с двумя опциями, перечисленными как «Объект 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)
-
VIEW
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>