0
私は 'project_list'と 'project_detail'ページを持っています。 'project_detail'ページの中には、現在のプロジェクトに新しいメンバーを追加できる 'project_members'ページにユーザーをリダイレクトするボタンがあります。新しい作成されたメンバーを現在のプロジェクトに関連付ける方法。私は少し見ると混乱している。それを実現する最善の方法は何ですか?新しいレコードと特定のオブジェクトの関連付け
models.py:
class Project(models.Model):
***FIELDS***
members = models.ManyToManyField(User, through='Membership',)
ROLE_CHOICES = (
('manager', 'Manager'),
('developer', 'Developer'),
('business_analyst', 'Business analyst'),
('system_analysts', 'System analysts'),
)
class Membership (models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE,)
project = models.ForeignKey(Project, on_delete=models.CASCADE)
role = models.CharField(max_length=20, choices=ROLE_CHOICES,)
forms.py:
class ProjectMembersForm(forms.ModelForm):
class Meta:
model = Membership
exclude = ('project',)
def __init__(self, *args, **kwargs):
super(ProjectMembersForm, self).__init__(*args, **kwargs)
self.fields['role'].choices = tuple(choice for choice in ROLE_CHOICES if choice[0] not in ['manager'])
urls.py:
urlpatterns = [
url(r'^project/(?P<slug>[-\w]+)/$', project_detail, name='project_detail'),
url(r'^project/(?P<slug>[-\w]+)/members$', project_members, name='project_members'),
]
view.py:
def project_members(request, slug):
if slug:
if request.method == 'POST':
members_form = ProjectMembersForm(request.POST)
if members_form.is_valid():
members_form.save()
else:
members_form = ProjectMembersForm(instance=request.user)
return render(request, 'project/project_members.html', {'members_form': members_form,})
ので、フォームは 'User'テーブル内のすべてのユーザーを表示し、プロジェクトにメンバーとして、それらを追加/削除できるようにする必要がありますか? – Udi
どのように: 'NON_MAANGER_CHOICES = ROLE_CHOICES [1:]'? – Udi