как добавить поле в User.groups.through в Django?

#django #django-models

#django #django-модели

Вопрос:

Я хочу добавить свое поле в таблицу user_user_group. Я могу добавить поле в группы таблиц, но я не могу добавить поле в поле группы «многие ко многим» в пользовательской модели. Я использую обезьянье решение для добавления поля в модель groups, но оно не работает для группового поля «многие ко многим» в пользовательской модели.

этот код работает:

 Group.add_to_class('type', models.IntegerField(choices=RoleType.choices, default=RoleType.ADMIN))
  

этот код не работает:

 User.groups.through.add_to_class('organization', models.ForeignKey(Organization, on_delete=models.CASCADE, null=True))
  

есть ли у вас какое-либо решение?

решите это решение или подскажите мне другое решение

Ответ №1:

Я бы создал свою пользовательскую модель, которая определяет ее связь с Group с помощью ManyToManyField, используя параметр through для указания моей пользовательской таблицы. Я бы также не стал пытаться добавлять поля непосредственно в таблицу Group.

Например, мне нужна добавленная организация в UserGroups:

 class User(AbstractUser):
    groups = models.ManyToManyField(
        Group,
        verbose_name=_('groups'),
        blank=True,
        help_text=_(
            'The groups this user belongs to. A user will get all permissions '
            'granted to each of their groups.'
        ),
        related_name="user_set",
        related_query_name="user",
        through="UserGroups"
    )


 class UserGroups(models.Model):
     user = models.ForeignKey(User, on_delete=models.CASCADE)
     group = models.ForeignKey(Group, on_delete=models.CASCADE)
     organization = models.ForeignKey(Organization, on_delete=models.CASCADE, null=True)