在查询时有没有一种简单的方法来更新** kwarg? Django的

时间:2017-05-17 00:48:42

标签: django parameters django-queryset reusability kwargs

我有一个这样的函数......这有助于我在调用查询时重写代码

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个需要{ {1}}。

这是一种简单的方法吗?

我曾想过在函数中添加另一个参数来检测is_staff: True是否有类似的东西。

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

提前感谢任何建议。

1 个答案:

答案 0 :(得分:0)

试试这个:

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)

基本上只需将default_fields dict转换为基本字典,因此如果要覆盖' is_staff',只需通过kwargs传递is_staff。