Django обновление нескольких моделей из одного шаблона - PullRequest
0 голосов
/ 12 марта 2020

Это вопрос об архитектуре приложения, которое у меня есть, и какие у меня есть варианты для достижения моей конкретной цели.

Я пытаюсь найти лучший способ создания потока для приложение викторины у меня есть. Сайт построен с Django 2.2, Vanilla JS и JQuery 3.4.1, а также Bootstrap 4.

Текущий поток из Приложение выглядит так:

Пользователь начинает со страницы 'questions', где он может Add a multiple-choice question или Add a true/false question к пулу вопросов. Это огромный пул вопросов после проведения только 10 тестов.

Вопросы с множественным выбором используют наборы форм для answers, которые связаны с ними (это было неинтересно, и мне нравится кодировать).

После того, как вопросы добавлены в пул, пользователь нажимает Create a Quiz, где они переносятся на страницу 'quiz-create', которая позволяет им создать тест, выбрать нужные варианты и выбрать все вопросы, которые он хочет задать. загадка.

Что бы я хотел, чтобы flow был похож на:

Пользователь начинает со страницы 'quiz-create', где он может создать тест, выберите параметры, которые они хотят, а также выберите Add a multiple-choice question или Add a true/false question. Когда они выбирают кнопку для добавления вопроса, мне бы хотелось, чтобы во всплывающем окне Bootstrap 4 появилась форма для создания вопроса. Как только они его создадут, отправьте его, используя AJAX, и обновите текущую викторину этим вопросом.

Q1: Могу ли я пройти тест slug или pk представлению, которое обрабатывает questions, чтобы узнать, какой тест он должен обновить? Будет ли он пытаться загрузить questions slug или pk или я думаю об этом, потому что я обычно использую ModelViews? Я полагаю, что они автоматически получают аргументы, которые вы ему даете, и используете модель, указанную в ModelView.

Q2: В настоящее время я использую ModelForms, но я предполагаю, что если я отправляю данные из нескольких модели, которые мне нужно будет использовать более общую c форму. Какой тип формы я должен использовать для этого? Должен ли я использовать больше общих c форм и представлений?

Тест должен отображать список вопросов (но не показывать ответы). Я хочу, чтобы эти вопросы можно было обновлять / удалять из этого списка. При обновлении должно открыться модальное окно с формой обновления, а при удалении следует просто отправить запрос AJAX представлению, которое обрабатывает удаление вопросов (затем ожидать ответа?)

Q3: Может Я отправляю запрос AJAX с <form action={% my url here %} на любой URL-адрес и ожидаю, что представление ответит непосредственно на страницу, с которой отправляется форма?

Q4: Чтобы отобразить вопросы на странице quiz-create я могу просто передать их как context из представления создания викторины, верно?

Q5: Я знаю, что этот вопрос немного открыт для мнения поэтому я буду удалять его, если людям это не нравится. Есть ли что-то еще, о чем я должен спрашивать или думать в этом процессе? Я немного новичок в AJAX / Javascript / JQuery, но его не так сложно использовать. Основное внимание уделяется Django, но, похоже, для этого понадобится AJAX / JS / JQuery.

Я действительно ценю любого, кто потратит время, чтобы подумать над моим вопросом и дать ответ.

Simplisti c Модели, которые я использую:

class Quiz:
    title = models.CharField()
    otherfields...

class MCQuestion:  # subclassed from Question model
    question = models.CharField()
    quiz =  models.ForiegnKey(Quiz, on_delete..)

class TFQuestion:  # subclassed from Question model
    question = models.CharField()
    quiz =  models.ForiegnKey(Quiz, on_delete..)

class Answer:
    answer = models.TextField()
    question = models.ForeignKey(Question, on_delete..)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...