Проблемы с ManyToManyField в django

У меня есть приложение с несколькими простыми аспектами.

  1. Вы можете войти/зарегистрироваться как пользователь, с пользовательским расширением пользователя Account.

users/models.py:

class Account(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    birthday = models.DateField(blank=True, null=True)

    def __str__(self):
        return self.user
  1. После того как вы вошли в систему, вы можете создать группу.

groups/models.py:

class Group(models.Model):
    leader = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
    description = models.TextField()
    topic = models.CharField(max_length=55) 
    joined = models.ManyToManyField(User, related_name='joined_group')
   
    def __str__(self):
        return self.topic
  1. Пользователи могут вступать в группы.

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

У меня просто проблемы с правильным моделированием. Сейчас я немного подправил модель CustomeUser.

users/models.py:

class Account(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    birthday = models.DateField(blank=True, null=True)
    # added line
    groups_joined = models.ManyToManyField(Group, blank=True)

    def __str__(self):
        return self.user

У меня возникали ошибки, поэтому я попробовал другой подход.

users/models.py:

class Account(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    birthday = models.DateField(blank=True, null=True)
    # added line
    groups_joined = models.ManyToManyField(Group, blank=True)

    def __str__(self):
        return self.user

# added lines
class JoinedGroups(models.Model):
    group = models.ManyToManyField(Group, blank=True)

    def __str__(self):
        return self.group

Это не вызвало никаких ошибок, но когда я захожу в localhost:8000/admin и проверяю своих пользователей, поле groups_joined пустое, хотя пользователи вступили в группы. Более того, я вижу в группах, что эти самые пользователи действительно присоединились, так что проблема, скорее всего, на стороне пользователя (или, возможно, обоих).

В общем, я ищу ответ на вопрос, как лучше всего реализовать эту идею, т.е. связать пользователей (через модель CustomeUser) с группами и наоборот. Спасибо.

Вернуться на верх