Django 有没有一种简单的方法可以在查询时更新**kwarg?德扬戈

Django 有没有一种简单的方法可以在查询时更新**kwarg?德扬戈,django,parameters,django-queryset,reusability,keyword-argument,Django,Parameters,Django Queryset,Reusability,Keyword Argument,我有一个这样的函数…它可以帮助我在调用查询时重新编写代码 def user_profile(self, **kwargs): default_fields = { 'is_deleted': False, 'is_staff': False, 'is_active': False } kwargs.update(default_fields) return Profile.objects.filter(**kwar

我有一个这样的函数…它可以帮助我在调用查询时重新编写代码

def user_profile(self, **kwargs):
    default_fields = {
        'is_deleted': False,
        'is_staff': False,
        'is_active': False
    }
    kwargs.update(default_fields)

    return Profile.objects.filter(**kwargs)
但比方说,如果我不想在函数中添加另一个新参数,有时我想覆盖is_staff字段*可能在20个查询中只有1个需要is_staff:True

这是一个简单的方法吗

我曾考虑在函数中添加另一个参数,以检测是否为真/假,这是可行的

但我想知道是否有更简单更快的方法来做到这一点

提前感谢您的建议。

试试这个:

def user_profile(self, **kwargs):
    default_fields = {
        'is_deleted': False,
        'is_staff': False,
        'is_active': False
    }
    default_fields.update(kwargs)

    return Profile.objects.filter(**default_fields)

基本上只需将默认字段dict转换为基本dict,因此如果要覆盖“is_staff”,只需通过kwargs传递is_staff即可。

这里可以找到有关合并两个dict的更多信息