Как лучше всего создать следующую модель в 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 содержит три строки с тремя вариантами, перечисленными в коде?

Любая помощь или общие советы будут высоко оценены.

И последнее, любые подсказки о том, как структурировать сериализатор, также были бы замечательны! Спасибо!

Вернуться на верх