简体   繁体   English

Django过滤器,设置值

[英]Django filters, set value

I have code: 我有代码:

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']

And I need to get (in SiteFIlter) only records with user=request.user. 我只需要使用user = request.user获取(在SiteFIlter中)记录。 Something like this: 像这样:

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

And I don't know how can I get this user from other place. 而且我不知道如何从其他地方获取此用户。 I've tried this: 我已经试过了:

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']

And when I created this filter: site_filter = SiteFilter(current_user = "nickname") 当我创建此过滤器时:site_filter = SiteFilter(current_user =“昵称”)

But only what I've got, it is this: 但只有我所拥有的是:

__init__() got an unexpected keyword argument 'current_user'

Look at your fields. 看你的领域。 Where are you expecting to plug in "current_user"? 您希望在哪里插入“ current_user”? That doesn't look valid. 那看起来无效。 I don't know filters well, but just from looking at your code, perhaps you want 我不太了解过滤器,但是仅仅通过查看您的代码,也许您想要

site_filter = SiteFilter(name="nickname")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM