У меня есть две модели: Group
и User
. У меня есть ManyToManyField в Group
, ссылаясь на User
. У меня также есть промежуточная модель GroupUser
, в которой хранятся дополнительные данные (дата присвоения и тип членства) для отношений «многие ко многим».Подтвердить объекты во многих отношениях во Django
У меня есть страница /groups/group-<group_id>/create-user/
, в которой я добавляю пользователей в группу. Моя проблема заключается в том, что если пользователь создается как тип 1, он не может быть назначен другим группам. Как я могу проверить, что пользователь не назначен другим группам, если отношения уже существуют с конкретным пользователем и типом 1?
Я использую CreateView
class GroupUserCreateView(CreateView):
model = GroupUser
fields = ['user', 'type']
template_name = "group_user_create_form.html"
def dispatch(self, request, *args, **kwargs):
self.group = get_object_or_404(Group, id=self.kwargs['group_id'])
return super(GroupUserCreateView, self).dispatch(request, *args, **kwargs)
def form_valid(self, form):
form.instance.group = self.group
return super(GroupUserCreateView, self).form_valid(form)
def get_success_url(self):
return reverse('group_user_list', kwargs={'group_id': self.group.id})
Это почти сработало, но меня интересуют только те пользователи, в которых 'Membership.type = 1'. По-прежнему можно добавить тех пользователей, у которых нет членства с типом = 1. Является ли это возможным? Я использую Django 1.8 – Jamgreen
Я скорректировал свой ответ. Мы знаем, что все пользователи, у которых нет набора groupuser__type = 1. В конце, продолжайте регулировать 'QuerySet' до его права. – Blackeagle52