Реализации и рендеринг нескольких inlineformset_factory на одной странице - PullRequest
0 голосов
/ 04 июля 2019

Я пишу приложение Django и застрял в точке, где я не могу понять, как структурировать модель и использовать inlineformset_factory, чтобы получить на одной странице возможность динамически добавлять для каждого клиента переменную комплекс мероприятий на каждый день недели (0-6).

Например:

  • Понедельник
    • Теннис
    • Йога
  • вторник
    • Теннис
    • Запуск
    • Дзюдо

[...]

  • воскресенье
    • Туризм
    • Плавание

Предположим, у меня есть эта модель:

DOW = (
    (1, "Lunedì"),
    (2, "Martedì"),
    (3, "Mercoledì"),
    (4, "Giovedì"),
    (5, "Venerdì"),
    (6, "Sabato"),
    (7, "Domenica"),
)

class Customer(models.Model):
    firstname = models.CharField(max_length=20)
    lastname = models.CharField(max_length=20)

    def __str__(self):
        return self.firstname + " " + self.lastname

class Week(models.Model):
    cliente = models.ForeignKey(
        Customer,
        on_delete=models.CASCADE,
        null=True,
        blank=True,
        default=None
    )
    week_number = models.IntegerField()
    week_day = models.IntegerField(
       choices=DOW,
       null=False
    )


    def __str__(self):
        return "Week number: " + self.week_number

class Activity(models.Model):
    name = models.CharField(max_length=20)
    week_day = models.ForeignKey(?)

    def __str__(self):
        return "Activity: " + self.name

Какое отношение нужно поместить между Activity <-> Week, чтобы получить возможность иметь на одной странице несколько форм, принадлежащих определенному номеру week_number для каждого дня недели? Я должен создать определенную модель "Activity" по одному на каждый день, а затем использовать их в inlineformset_factory (Week, Activity_Monday), мне не кажется правильным ...

В основном я понимаю, что на этот раз я не могу понять, как обрабатывать эти отношения между моделями.

Любой совет, помощь или пример очень ценятся!

...