#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)