Есть ли способ изменить функциональность базовой модели Django Group?
У меня есть приложение Django со следующей архитектурой; модель Company, которая содержит несколько пользователей (пользователь является пользовательским пользователем, расширяющим AbstractUser). Каждый пользователь может быть членом только одной компании. Мы используем базовую модель Django Group и базовые разрешения Django.
Мы расширили модель пользователя, чтобы добавить в нее поле компании и сделать имя пользователя уникальным для каждой компании, а не уникальным глобально. Это позволяет нам иметь несколько пользователей с одинаковым именем пользователя, если они не являются частью одной компании.
Мы хотим сделать то же самое с группами; иметь возможность иметь несколько групп с одним и тем же именем, если они не связаны с одной и той же компанией.
В какой-то момент мы расширили модель группы, унаследовав ее от базовой модели Group, и добавили в нее поле company, что создало отношение "один к одному" между нашей CustomGroup и базовой Group. Все это прекрасно работает. Проблема в том, что мы не можем найти способ изменить логику модели Group, чтобы поле компании и имя были уникальными вместе, а не только имя было уникальным.
Это наша модель CustomGroup:
class CustomGroup(Group):
company = models.ForeignKey(Company, on_delete=models.CASCADE, blank=True, null=True)
hidden = models.BooleanField(default=False)
class Meta:
indexes = [models.Index(fields=['company'])]
Любые идеи о том, как этого добиться, будут оценены по достоинству. Спасибо.