簡體   English   中英

如何在Django查詢參數中使用復選框選擇的值?

[英]How can I use checkbox selected values in Django query parameters?

我正在開發一個webapp,它的工作方式是當用戶從復選框中選擇值時,會顯示其描述。 我正在調用一個函數反過來調用另一個函數,我這樣做是因為我想使用GET而不是POST,因為沒有服務器端更改因此GET更好而不是POST。 如何使用GET和查詢參數使用單個函數實現此目的? 以下是我的代碼。

這是我的urls.py

url(r'^view_task_description/$', views.view_task_description, name='view_task_description'),
url(r'^view_task_description/(?P<pk>[0-9]+)/$', views.get_task_description, name="get_task_description"),

這是我的views.py

@login_required
def view_task_description(request):
    if request.method == 'POST':
        task_description = GetTaskDescription(data=request.POST, user=request.user)
        if task_description.is_valid():
            obj = GetTaskDescription.get_task_description(task_description)
            return redirect('get_task_description', pk=obj[0].pk)
    return render(request, 'todoapp/select_task_description.html', context={'view_tasks': GetTaskDescription(user=request.user)})


@login_required
def get_task_description(request, pk):
    obj = get_object_or_404(Task, pk=pk)
    return render(request, 'todoapp/task_desc.html', context={'description': obj.description})

這是我的forms.py

class GetTaskDescription(forms.Form):

    get_tasks = forms.ModelMultipleChoiceField(
        queryset=Task.objects.none(),
        widget=forms.CheckboxSelectMultiple,
        required=True
    )

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user')
        super(GetTaskDescription, self).__init__(*args, **kwargs)
        self.fields['get_tasks'].queryset = self.user.task_set.all()

    def get_task_description(self):
        tasks = self.cleaned_data['get_tasks']
        return tasks

在視圖中更改表單數據的來源:

task_description = GetTaskDescription(data=request.GET, user=request.user)

暫無
暫無

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

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