Мне нужно отслеживать приглашение от пользователей к пользователю. Кто пользователи приглашают кого. Итак, у меня есть модель User, у которой M2M есть «я».django many to many duplicate relation issue
class User(AbstractBaseUser, PermissionsMixin):
…
# referral part
invited_by = models.ForeignKey("self", blank=True, null=True, db_index=True)
recruits = models.ManyToManyField("self", blank=True, null=True)
direct_matches = models.ManyToManyField("self", blank=True, null=True)
second_matches = models.ManyToManyField("self", blank=True, null=True)
third_matches = models.ManyToManyField("self", blank=True, null=True)
и эта часть кода, которые отслеживают направление:
@login_required
def do_ref_system_stuff(request):
"""
Assign recruits on 'invited_by' user and invited_by to user.
"""
if 'invited_by' in request.session:
# Add user to recruits
invited_by = get_object_or_404(User, pk=request.session['invited_by'])
invited_by.recruits.add(request.user)
invited_by.save()
# Assign invited_by to the new user
request.user.invited_by = invited_by
request.user.save()
del request.session['invited_by']
return HttpResponseRedirect('/dashboard/')
Сейчас:
invited_by.recruits.all()
[<User: prova>] # new registered user == 'request.user'
Но почему, если я:
request.user.recruits.all()
[<User: dioc>] # invited_by
Почему отношения является дубликатом ?
Благодаря
Вопрос: почему у вас как invited_by и рекрутов в вашей модели? Также invite_by много-к-одному, а новобранцы - многие-ко-многим? кажется самодостаточным –