Django Путаница в отношениях между полями ManyToMany
Я использую Django 3.2
Я пишу приложение для сообществ, и я хочу иметь возможность предоставить функциональность для администраторов сообщества, а также функциональность, позволяющую пользователям запрашивать доступ к ограниченным или частным группам.
Я, кажется, запутался в отношениях ManyToMany. Вот что у меня есть на данный момент (отредактировано):
class Community(models.Model):
pass
# Group of administrators responsible for moderation and membership approvals
# (for restricted and private communities)
# Note: administrators can autopost and delete topics and comments
class CommunityAdministrator(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.RESTRICT)
community = models.ForeignKey(Community, on_delete=models.CASCADE, related_name="administrators")
class Meta:
constraints = [
models.UniqueConstraint(fields=['user', 'community'], name='idxu_commty_admin')
]
# Community membership approvals (for restricted and private communities)
#
class CommunityMembership(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.RESTRICT)
communities = models.ManyToManyField(Community, though='CommunityMembershipApproval')
class CommunityMembershipApproval(models.Model):
PENDING = 0
APPROVED = 1
REJECTED = 2
APPROVAL_STATES = (
(PENDING, 'Pending'),
(APPROVED, 'Approved'),
(REJECTED, 'Rejected')
)
person = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
community = models.ForeignKey(Community, on_delete=models.CASCADE)
approval_state = models.PositiveIntegerField(choices=APPROVAL_STATES, default=PENDING)
request_tstamp = models.DateTimeField(auto_now=True)
Позволят ли приведенные выше таблицы реализовать функциональность, которую я описал выше - а именно:
- Администраторы - позволяет мне добавлять/удалять администраторов сообщества, а также получать доступ к администраторам сообщества через поле
administrators
- Запросы на членство: Позволяет мне CRUD запросы на одобрение членства .