簡體   English   中英

如何在DetailView的post方法中詳細查看pk? (姜戈)

[英]How to detailview pk in post method in DetailView? (Django)

在我的 detailView 中,我有兩種方法get_context_datapost get_context_data我可以使用self.object.pk獲取 detailView pk,但是如何在post方法中獲取它?

[ 更新 ]

這是視圖

class Class_detailView(LoginRequiredMixin, DetailView):
    login_url = '/'
    model = Class
    template_name = "attendance/content/teacher/class_detail.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['attendance_form'] = AttendanceForm(current_class_pk=self.object.pk) # pass data to form via kwargs 
        return context

    def post(self, request, *args, **kwargs):
        if request.method == "POST":
            attendance_form = AttendanceForm(request.POST)
            if attendance_form.is_valid():
                attendance_form.instance.teacher = self.request.user
                attendance_form.save()
                return redirect('class-detail', pk=self.kwargs.get('pk'))

形式

class AttendanceForm(forms.ModelForm):
    class Meta:
        model = Attendance
        fields = ['student',]

    def __init__(self, *args, **kwargs):
        current_class_pk = kwargs.pop('current_class_pk')
        super(AttendanceForm, self).__init__(*args, **kwargs)
        current_student = Class.objects.get(id=current_class_pk)
        self.fields['student'].queryset = current_student.student

我想在調用 post 請求時獲取 pk 並將其傳遞給表單。 我該怎么做?

你試過這個嗎:

def post(self, request, *args, **kwargs):
    if request.method == "POST":
        attendance_form = AttendanceForm(request.POST, current_class_pk=self.kwargs.get('pk'))
        if attendance_form.is_valid():
            attendance_form.instance.teacher = self.request.user
            attendance_form.save()
            return redirect('class-detail', pk=self.kwargs.get('pk'))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM