2

次のモデルがあります:部門、プロジェクト、部門プロジェクト、従業員、およびメンバーシップ。部門には多くのプロジェクトがあり、プロジェクトにはメンバーシップを通じて役割が割り当てられた多くの従業員がいます。EU が従業員の役割を複数のプロジェクトに割り当てることができるように、InlineFormset を作成しようとしています。

私のテンプレートは正しいラベルとフィールドをレンダリングしますが、Departmentprojects のラベルとフィールドにはプロジェクトの名前が表示されません。「Departmentprojects オブジェクト」のみが表示されます。「Departmentprojects オブジェクト」の代わりにプロジェクトの名前をレンダリングするフォームを取得するにはどうすればよいですか?

--

ブラウザの現在のテンプレート:

Departmentproject ラベル: (「Departmentprojects オブジェクト」としてリストされた 2 つのオプションを含むドロップダウン メニュー) 役割: プロジェクト マネージャー

ブラウザで必要なテンプレート:

部署プロジェクト名 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>
4

1 に答える 1

3

モデルに__unicode__メソッドを追加します。Departmentprojects

class Departmentprojects(models.Model):
    department = models.ForeignKey(Department)
    projects = models.ForeignKey(Projects)
    members = models.ManyToManyField(Employees, through='Membership')

    def __unicode__(self):
        return "%s > %s" % (self.department, self.projects)
于 2012-03-13T19:54:45.547 に答える