Python Django 1.6模型。管理器抱怨要解包的值太多
我试图在我的model.manager中使用kwargPython Django 1.6模型。管理器抱怨要解包的值太多,python,django,Python,Django,我试图在我的model.manager中使用kwargfield='unanswered=True',但它抱怨要解包的值太多。不明白为什么,怎么办 模型管理器: class ListAllObjectsManager(models.Manager): def date_search_threads(self, date1, date2, **kwargs): print kwargs["field"] date1 = datetime.datetime.s
field='unanswered=True'
,但它抱怨要解包的值太多。不明白为什么,怎么办
模型管理器:
class ListAllObjectsManager(models.Manager):
def date_search_threads(self, date1, date2, **kwargs):
print kwargs["field"]
date1 = datetime.datetime.strptime(date1, "%m-%d-%Y").date()
date2 = datetime.datetime.strptime(date2, "%m-%d-%Y").date()
date2 = date2 + datetime.timedelta(days=1)
return super(ListAllObjectsManager, self).get_queryset().filter(
kwargs["field"], **{'{}__range'.format(
kwargs["column"]): (date1, date2)})
视图:
我想这是因为
kwargs[“field”]
只是一个字符串。试一试
def date_search_threads(self, date1, date2, **kwargs):
print kwargs["field"]
date1 = datetime.datetime.strptime(date1, "%m-%d-%Y").date()
date2 = datetime.datetime.strptime(date2, "%m-%d-%Y").date()
date2 = date2 + datetime.timedelta(days=1)
param_filter = {'{}__range'.format(kwargs["column"]): (date1, date2)}
if 'field' in kwargs:
field = kwargs['field'].split('=')
param_filter[field[0]] = field[1]
return super(ListAllObjectsManager, self).get_queryset().filter(**param_filter))
或者更好,直接用kwargs传递口述:
...
context['unanswered_threads'] = ThreadVault.list_all_threads \
.date_search_threads(date1, date2, field={'unanswered': True},
column="latest_post_date").count()
及
...
context['unanswered_threads'] = ThreadVault.list_all_threads \
.date_search_threads(date1, date2, field={'unanswered': True},
column="latest_post_date").count()
...
param_filter = {'{}__range'.format(kwargs["column"]): (date1, date2)}
param_filter.update(kwargs.get('field', {})
return super(ListAllObjectsManager, self).get_queryset().filter(**param_filter))