私は次のモデルを持っています:部門、プロジェクト、部署プロジェクト、従業員、および会員。部署には多くのプロジェクトがあり、プロジェクトにはメンバーシップを通して役割を割り当てられた従業員が多数存在します。 EUが複数のプロジェクトに従業員の役割を割り当てることができるように、私はInlineFormsetを作成しようとしています。DJANGO:リテラル "モデルオブジェクト"の代わりにフォームにモデルオブジェクト名をレンダリングする方法は?
私のテンプレートは正しいラベルとフィールドをレンダリングしますが、Departmentprojectsのラベルとフィールドにはプロジェクト名が表示されません。 「Departmentprojectsオブジェクト」のみを表示します。 "Departmentprojectsオブジェクト"ではなく、プロジェクトの名前をレンダリングするフォームを取得するにはどうすればよいですか?
- ブラウザで
現在のテンプレート:
Departmentprojectラベル:( "Departmentprojectsオブジェクト" として記載されている2つのオプションがドロップダウンメニュー) 役割:プロジェクトマネージャー
ブラウザで目的のテンプレート:
プロジェクト名012:プロジェクトマネージャ
Departmentproj電気ショック療法名2:いくつかの他の役割
-
MODELS:
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))
-
TEMPLATE
<form method="post" action="/assign_to_project/{{ employees.id }}/">
{% csrf_token %}
<table>
{{ formset }}
</table>
<input type="submit" value="Submit"/>
</form>
私はここに概念的な誤りがあると思います。 'Departmentprojects'モデルのポイントは何ですか? ProjectsをDepartmentsにリンクする外部キーまたは多対多のフィールドを配置し、プロジェクトにメンバーを添付したいだけではないですか? – nrabinowitz
また、「Department」の場合と同じように、原則としてモデルの名前を単数形で指定したいとします。正当な理由は、 'projects = models.ForeignKey(Projects)'という行は、単一のプロジェクトとの関係を作成するだけですが、それは多くのプロジェクトとの関係を作成するかのように読み込まれます。 – nrabinowitz
申し訳ありませんプログラミングに新しい..しかし、私はこれは、プロジェクトが複数の部門に属することができるので、このように設定すると思います。プロジェクトテーブルには、さまざまなプロジェクト部門の名前のみが含まれています。 – thedeepfield