Как лучше всего создать следующую модель в Django Rest Framework
В настоящее время я нахожусь в процессе создания новой модели. Текущая модель выглядит следующим образом,
DIET_OPTIONS = (
('vegan', 'Vegan'),
('vegetarian', 'Vegetarian'),
('meat', 'Meat')
)
class Madklub(models.Model):
owner = models.ForeignKey(MyUser, related_name="owner", on_delete=models.CASCADE)
dish = models.CharField(max_length=100)
date = models.DateField()
guests = models.PositiveIntegerField()
active = models.BooleanField(default=True)
participants = models.ManyToManyField(MyUser, related_name="participants")
diet = ArrayField(
models.CharField(choices=DIET_OPTIONS, max_length=10, default="vegetarian")
)
Теперь модель должна быть довольно простой, наиболее важными полями являются два пользовательских отношения и поле диеты. Идея заключается в том, что у одного Madklub
есть владелец (у владельца может быть несколько Madklub
).
Каждый Madklub
имеет список участников, каждый раз, когда создается Madklub
, он должен начинаться только с одного участника, самого владельца. Это первый вопрос, как мне сделать это автоматически, нужно ли просто обработать это в представлении?
Примечание, поле guests
- это поле, отслеживающее, сколько гостей, не являющихся пользователями, приглашены/участвуют в Madklub
. Можно ли каким-то образом привязать это поле к пользователю?
Теперь другой вопрос, как видно, у меня сейчас поле diet
в виде ArrayField
это, конечно, работает только с базой данных Postgres. Как я вижу, у меня есть несколько возможностей. Первое, изменить мою локальную базу данных на базу данных Postgres (нежелательно). Два, создать новую модель, которая является моделью диеты, содержащей простое поле выбора, и связать эту модель с моделью Madklub
в отношениях "многие-ко-многим" (или достаточно "один-ко-многим"?). Однако нет ли другого более простого способа добиться этого? Все, что я хочу, это чтобы каждая модель Madklub
содержала список вариантов диеты. Вопрос, как мне убедиться, что потенциальная модель Diet
содержит три строки с тремя вариантами, перечисленными в коде?
Любая помощь или общие советы будут высоко оценены.
И последнее, любые подсказки о том, как структурировать сериализатор, также были бы замечательны! Спасибо!