Как связать пользователя с моделью из CreateView?

Я пытаюсь создать приложение, которое позволяет учетным записям пользователей создавать, присоединяться, покидать, обновлять (если у них есть авторизация) и удалять группы. Проблема, с которой я столкнулся, заключается в том, чтобы найти способ связать две модели, чтобы учетные записи отображали созданные ими группы

users/models.py:

class Account(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    joined_groups = models.ManyToManyField(Group, related_name='joined_group')
    created_groups = models.ManyToManyField(Group, related_name='created_group') 

group/models.py

class Group(models.Model):
   leader = models.ForeignKey(User, on_delete=models.CASCADE)
   name = models.CharField(max_length=55)
   description = models.TextField()
   joined = models.ManyToManyField(User, related_name='joined_group', blank=True)

Я смог найти способ, чтобы учетные записи присоединялись к группам:

def join_group(request, pk):
    id_user = request.user.id
    group = Group.objects.get(id=request.POST.get('group_id'))
    account = Account.objects.get(user_id=id_user)
    if group.joined.filter(id=request.user.id).exists():
        group.joined.remove(request.user)
        account.joined_groups.remove(group)  
    else: 
        group.joined.add(request.user)
        account.joined_groups.add(group) 
    return HttpResponseRedirect(reverse('group_detail', args=[str(pk)]))

И это работало достаточно хорошо. Учетные записи теперь могли присоединяться к группам и отображать группы, к которым они присоединились. Но как добавить группу в процессе ее создания?

views.py:

class CreateGroup(CreateView):
    model = Group
    form_class = ChaburahGroup
    template_name = 'create_group.html'

Как добавить функцию для добавления групп в Accounts created_groups после (или по мере) создания группы? Извините, если кода недостаточно, если нужно что-то еще, я добавлю.

В методе form_valid можно делать все, что угодно. Если я правильно понимаю, что требуется...

def form_valid( self, form):

    instance = form.save()
    instance.joined.add( self.request.user) # add the creating user to the group

    account = self.request.user.account
    account.created_groups.add( instance)

    return redirect( ... )
Вернуться на верх