基本问题是我不能使用key-value参数
field_variable_name__isnull=True/False
或
field_variable_name=None
当field_variable_name
包含空格或连字符(例如:'这是我的字段变量名',或'这是另一个')。
我查找了如何过滤模型。object-list with 'varname__isnull=True',但没有找到包含空格字符的名称的解决方案:
在我的views.py
我有以下功能:
def currenttodos(request):
todos = Todo.objects.filter(user=request.user, time_completed__isnull=True)
return render(request, 'todo/currenttodos.html', {'todos': todos})
models.py
-文件中的Todo
模型包含以下字段:
time_completed = models.DateTimeField(null=True, blank=True)
这种方式工作,但实际上我想以不同的方式调用time_completed
-字段,例如"完成时间">使用name
-参数:
time_completed = models.DateTimeField(null=True, blank=True, name="Completion time")
现在,问题是我不能使用__isnull
-参数,因为名称包含空间.以下所有示例都不起作用:
todos = Todo.objects.filter(user=request.user, Completion time__isnull=True)
todos = Todo.objects.filter(user=request.user, "Completion time"__isnull=True)
todos = Todo.objects.filter(user=request.user, "Completion time"=None)
etc.
如何使包含空格或连字符的名称工作?
这是一个类似帖子的链接:筛选查询集中的空名称或NULL名称
基本上,这个用户希望能够排除null或空白的实例。正如您所看到的,有几个选项可以做到这一点。我喜欢的方法是将过滤条件链接在一起,因为对我来说,这更直接,更容易理解,但是你有一些选择。
您可以删除name
参数。这是不必要的。django会创建一个标签为time_completed
的字段,但你只需要像这样过滤
todos = Todo.objects.filter(user=request.user, time_completed__isnull=True)