簡體   English   中英

Django過濾器,設置值

[英]Django filters, set value

我有代碼:

import django_filters

class BasicFilter(django_filters.FilterSet):
    class Meta:
        model = MyDataModel
        fields = []

class SiteFilter(BasicFilter):
    name = django_filters.ModelMultipleChoiceFilter(
        queryset=MySiteModel.objects.all(), help_text=''
    )
    class Meta(ReportFilter.Meta):
        fields = ['name']

我只需要使用user = request.user獲取(在SiteFIlter中)記錄。 像這樣:

class SiteFilter(BasicFilter):
    name = django_filters.ModelMultipleChoiceFilter(
        queryset=MySiteModel.objects.filter(user=current_user), help_text=''
    )
    class Meta(ReportFilter.Meta):
        fields = ['name']

而且我不知道如何從其他地方獲取此用戶。 我已經試過了:

class SiteFilter(BasicFilter):
    name = django_filters.ModelMultipleChoiceFilter()

    def __init__(self, *args, **kwargs):
        if "current_user" in kwargs:
            name = django_filters.ModelMultipleChoiceFilter(
                queryset=MySiteModel.objects.filter(user=kwargs["current_user"]),
                help_text=''
            )

    class Meta(ReportFilter.Meta):
        fields = ['name']

當我創建此過濾器時:site_filter = SiteFilter(current_user =“昵稱”)

但只有我所擁有的是:

__init__() got an unexpected keyword argument 'current_user'

看你的領域。 您希望在哪里插入“ current_user”? 那看起來無效。 我不太了解過濾器,但是僅僅通過查看您的代碼,也許您想要

site_filter = SiteFilter(name="nickname")

暫無
暫無

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

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