Проблемы с ManyToManyField в django
У меня есть приложение с несколькими простыми аспектами.
- Вы можете войти/зарегистрироваться как пользователь, с пользовательским расширением пользователя 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
- После того как вы вошли в систему, вы можете создать группу.
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
- Пользователи могут вступать в группы.
Проблема, с которой я столкнулся, заключается в том, что я хочу хранить в модели 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) с группами и наоборот. Спасибо.