Django: Quizapp с моделью вопросов и ответов

Я хотел бы создать приложение викторины с Django. Где вопросы могут храниться в БД, а пользователи могут добавлять дополнительные вопросы в админке. и каждый вопрос может иметь ответ из пользовательского ввода.

Это базовая версия того, что я пробовал до сих пор, Простой пример Моих моделей:

QuestionModel

  • ID
  • вопрос
  • автор

AnswerModel

  • ID
  • Ответ
  • question_id
  • автор

Итак, когда я создаю AnswerForm(): он показывает форму, но вопросы отображаются в виде выпадающего списка вместо меток. И он не создает поля для каждого вопроса. Он просто создает одно поле ввода и выпадающий список для вопроса. Я знаю, что он так делает, потому что у меня есть question_id как FK в модели ответа.

Есть ли лучший способ сделать это? Я новичок в Django

Я не силен в django, но я думаю, что вы можете использовать эту структуру:

Модель вопроса:

class Question(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=60,)
    created_at = models.DateTimeField(auto_now_add=True)
    slug = models.SlugField(unique=True, max_length=200)

Модель ответа:

 class Answer(models.Model):
     user = models.ForeignKey(User, on_delete=models.CASCADE)
     answer = models.TextField()         
     created_at = models.DateTimeField(auto_now_add=True)
     post = models.ForeignKey(Question, on_delete=models.CASCADE)

В ваших представлениях добавьте:

class My_Answer(LoginRequiredMixin, CreateView):
    model = Answer
    fields = ['answer']
    template_name = 'answer.html'
    success_url = reverse_lazy('#Redirecting User To The Dashboard')

    def form_valid(self, form):
        form.instance.user = self.request.user
        form.instance.post_id = self.kwargs['pk']
        result = super().form_valid(form)
        return result    

В ваши урлы добавьте:

    path('question/<int:pk>/answer/', views.My_Answer.as_view(), name='answer'),

Добавьте это в шаблон ответа:

{% load crispy_forms_tags %}
               <form method="POST" action="" enctype="multipart/form-data">
                 {% csrf_token %}  
                 {{ form | crispy }}
                 <input type="submit" value="submit" class="btn btn-primary"> 
Вернуться на верх