私の最初のアプリ(コース)ではコースを作成しています。各コースにはチャプター数があり、各チャプターにはクイズがあります。 2番目のアプリ(クイズ)を使用してクイズを作成しようとしています。 models.py(クイズ):Djangoでの外部キーフィールドの設定
class Quiz(models.Model):
coursechapter = models.ForeignKey(CourseChapter)
name = models.CharField(max_length=255, verbose_name=u'Quiz name',)
creator = models.ForeignKey(User)
creation = models.DateField(auto_now_add=True)
def __unicode__ (self):
return self.name
class Question(models.Model):
quiz = models.ForeignKey(Quiz)
text = models.CharField(max_length=255, verbose_name=u'Question\'s text')
class QuestionAnswer(models.Model):
question = models.ForeignKey(Question)
text = models.CharField(max_length=255, verbose_name=u'Answer\'s text')
is_valid = models.BooleanField(default=False)
class UserAnswer(models.Model):
answer = models.ForeignKey(QuestionAnswer)
私はコースを作成するためのテンプレートを持っているが、そのテンプレートの内側に私は章を作成するための別のテンプレート(ビュー)に私を取るのリンクを(章を追加)を持っています。内部には、その特定の章のクイズを作成するためのリンクがあります。そのリンクは、view.py(クイズアプリから)で表されるurl:/ quiz/new(クイズアプリからurl.pyを使用)につながります。 問題私はクイズを作成しているチャプターのIDを取得する方法がわかりません。チャプターURLの例(ユーザーがCreate Quizをクリックする前に)/ course/new/chapter/197 /、何とかchapter_id(197)をリンク経由で送ることができますか? views.py(クイズ):
class CreateQuizView(CreateChapterView):
model = Quiz
template_name = 'quiz/create_quiz.html'
fields = '__all__'
def dispatch(self, request, *args, **kwargs):
self.pk = kwargs.get('pk')
return super(CreateQuizView, self).dispatch(request, *args, **kwargs)
def get_success_url(self):
return reverse('quiz-list',
kwargs={'pk': Quiz.objects.latest('id').id})
def get_context_data(self, **kwargs):
context = super(CreateQuizView, self).get_context_data(**kwargs)
return context
views.py(コース):(メイン)
url(r'^course/', include('course.urls')),
url(r'^quiz/', include('quiz.urls', namespace="quiz")),
のURL(コース)
url(r'^new/$', course.views.CreateCourseView.as_view(),
name='courses-new',),
url(r'^new/(?P<pk>\d+)/$', course.views.CreateChapterView.as_view(),
name='courses-chapters'),
url(r'^edit/(?P<pk>\d+)/$', course.views.UpdateCourseView.as_view(),
name='courses-edit',),
url(r'^new/chapter/(?P<pk>\d+)/$', course.views.CreateChapterView.as_view(),
name='chapter-content',),
url(r'^edit/chapters/(?P<pk>\d+)/$', course.views.UpdateChapterView.as_view(),
name='chapters-edit',),
class CreateChapterView(CreateView, GroupRequiredMixin):
model = CourseChapter
template_name = 'course/add_chapter.html'
fields = '__all__'
def dispatch(self, request, *args, **kwargs):
self.pk = kwargs.get('pk')
return super(CreateChapterView, self).dispatch(request, *args, **kwargs)
def get_success_url(self):
return reverse('courses-chapters',
kwargs={'pk': Course.objects.latest('id').id})
def get_context_data(self, **kwargs):
context = super(CreateChapterView, self).get_context_data(**kwargs)
context['chapter'] = CourseChapterForm
context['chapters'] = CourseChapter.objects.all()
context['last'] = Course.objects.latest('id')
context['courses'] = Course.objects.all()
context['action'] = reverse('courses-chapters',
kwargs={'pk': Course.objects.latest('id').id})
context['kw'] = self.kwargs
context['quiz'] = QuizForm()
context['question'] = QuestionForm()
context['answer'] = QuestionAnswerForm
return context
def form_valid(self, form):
self.object = form.save()
# chapters = CourseChapter.objects.filter(course_id=Course.id)
return HttpResponseRedirect(self.get_success_url())
urls.py
URL(クイズ):
urlpatterns = [
url(r'^$', quiz.views.ListQuizView.as_view(),
name='quiz-list',),
url(r'^new/$', quiz.views.CreateQuizView.as_view(),
name='quiz-new',),
]
あなたのURLを共有する – Anoop