Представление Dynami c для создания записи модели, которая включает отношения ForeignKeys и ManyToMany - PullRequest
0 голосов
/ 14 января 2020

Рассмотрим следующие Django модели:

class Agent(models.Model):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)


class Report(models.Model):
    date = models.DateTimeField(auto_now_add=True)
    user = models.ForeignKey(
        get_user_model(),
        on_delete=models.CASCADE,
        related_name='reports',
    )  # just the Django User creating the Report
    agent = models.ForeignKey(
        Agent,
        on_delete=models.CASCADE,
        related_name='reports',
    )  # Agent which the Report is about
    body = models.TextField()


class Objective(models.Model):
    agent = models.ForeignKey(
        Agent,
        on_delete=models.CASCADE,
        related_name='objectives',
    )  # Agent who has this Objective
    reports = models.ManyToManyField(Report, related_name='reports')
    body = models.CharField(max_length=255)

Здесь подразумевается, что Агенты могут иметь несколько Целей, а Отчет может относиться к одному Агенту, но к любому количеству Целей этого Агента.

Моя проблема связана с созданием представления / шаблона / формы для создания нового отчета. Что является хорошим подходом для создания страницы, в которой:

  1. имеет раскрывающийся список для выбора агента (сама по себе тривиальная часть; просто используйте ModelForm с model = Report)
  2. , затем имеет задачи Агента, которые заполняются на странице, так что может быть выбрано произвольное их количество (хотя бы одна требуется)
  3. , а затем после отправки формы новый отчет сохраняется в каждой цели " сообщает «Отношения ManyToManyField?

Я относительно новичок в Django, поэтому я совершенно не уверен, какой подход выбрать, или какие инструменты Django помогут мне в этой ситуации. Шаг 2, кажется, требует Javascript и некоторый способ доступа к базе данных / моделям Django через эту Javascript?

Может кто-нибудь предложить подход или даже написать рабочий пример?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...