Django 查询使用 and 子句

发布于 2024-09-19 09:14:05 字数 476 浏览 7 评论 0原文

如何在 Django 中使用 and 子句

例如:

    select Date(timestamp) from userlog where (Date(timestamp) >= "2008-01-02" and Date(timestamp) <= "2009-01-02") and ipaddress != "192.168.2.211";


  Django query:

     userlog.objects.filter(timestamp__range=(startdate,enddate),ipaddress !="192.168.2.211")

在上面有一个错误说 non-keyword arg afterkeyword arg 并且错误在上面的行

ipaddress is a char字段,我构建的查询是否错误,如果是的话,应该如何解决

How to use and clause in Django

For ex:

    select Date(timestamp) from userlog where (Date(timestamp) >= "2008-01-02" and Date(timestamp) <= "2009-01-02") and ipaddress != "192.168.2.211";


  Django query:

     userlog.objects.filter(timestamp__range=(startdate,enddate),ipaddress !="192.168.2.211")

In the above there is an error saying non-keyword arg afterkeyword arg and the error is in the above line

ipaddress is a char field,Am i constructing the query wrong if so how this should be resolved

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

℉絮湮 2024-09-26 09:14:05
userlog.objects.filter(timestamp__range=(startdate,enddate),ipaddress !="192.168.2.211")

!= 在 Django 中的使用不正确(或者实际上,在 Python 中也不正确)。为了排除 ipaddress 与特定值匹配的所有记录,您应该使用 exclude() 机制。

userlog.objects.filter(timestamp__range=(startdate,enddate)).exclude(ipaddress = 
        "192.168.2.211")
userlog.objects.filter(timestamp__range=(startdate,enddate),ipaddress !="192.168.2.211")

The use of != is not correct in Django (or indeed, not in Python). In order to exclude all records with ipaddress matching a certain value you should use the exclude() mechanism.

userlog.objects.filter(timestamp__range=(startdate,enddate)).exclude(ipaddress = 
        "192.168.2.211")
半夏半凉 2024-09-26 09:14:05

这与 and 子句无关。问题在于 ipaddress !="192.168.2.211" 是 Django 中的无效过滤器表达式。您只能在过滤器表达式中使用等号,因为它们实际上是过滤器方法的关键字参数。

对于您的情况,您可能需要执行以下操作:

userlog.objects.filter(timestamp__range=(startdate,enddate)
                      ).exclude(ipaddress="192.168.2.211")

This has nothing to do with the and clause. The issue is that ipaddress !="192.168.2.211" is an invalid filter expression in Django. You can only use the equals sign in filter expressions, because they are actually keyword arguments to the filter method.

In your case, you can need to do:

userlog.objects.filter(timestamp__range=(startdate,enddate)
                      ).exclude(ipaddress="192.168.2.211")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文