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的更多信息