Я работаю над дизайном для некоторых моделей в Джанго и хотел бы получить совет.У меня есть модель для команд, в которую могут войти многие пользователи.Пользователи также могут быть членами многих команд, но они не могут быть членами одной команды дважды.Есть также отдельная информация, которую я хочу отслеживать для каждой команды / пользователя.Кроме того, будет пользователь, который является «администратором» для каждой команды, но у каждой команды может быть только один администратор.У меня есть несколько кратких определений модели данных следующим образом:
class Team(models.Model):
name = models.CharField()
members = models.ManyToManyField(User, through='Membership')
admin = models.ForeignKey(User)
class Membership(models.Model):
user = models.ForeignKey(User)
team = models.ForeignKey(Team)
extra_data = models.CharField()
Итак, я предполагаю, что у меня есть два вопроса:
1) как мне сделать так, чтобы в модели членства не было пользователя иКомбинация команд появлялась несколько раз?
2) Есть ли лучший способ обозначить администратора в команде, убедившись, что в каждой команде был только один?Похоже, что если я сохраняю администратора таким образом, при соблюдении правила о наличии только одного администратора, становится слишком громоздким, чтобы запрашивать всех членов команды, так как администратор не будет в таблице Членства.И если они хранятся в членстве, то мне придется выполнить другой запрос, чтобы увидеть, являются ли они администратором этой команды или нет.Мысль об использовании поля is_admin в Membership возникла у меня в голове, но я не уверен, как сохранить ограничения 1 администратор на команду.
Любая помощь будет принята с благодарностью.
ОБНОВЛЕНИЕ: похоже, что метатег unique_together - это то, что я ищу в первом вопросе.Мне все еще интересно второе ... .... 1012 *