我有一个模型页面
class Page(models.Model):
category = models.ForeignKey(Category)
title = models.CharField(max_length=128)
url = models.URLField()
views = models.IntegerField(default=0)
当我在表单中添加新页面时,我希望确保不会添加已添加的页面。
所以我这样做
*******
if Page.objects.filter(url=link)
*******
但是有一个问题。有时,Page实例有一个带斜杠的URL,有时却没有。同样的情况是给定的链接。
情况
link = http://newsru.com
url = http://newsru.com/
我可以在这里使用url__startswith
,但它会检测newsru.com/page1
,newsru.com/page2
等所有网页。
url_contains
无法帮助
我可以使用这样的东西
if Page.objects.filter(url=link.strip('/')
但是网址可以是斜杠。
这种情况的正确查找是什么?
答案 0 :(得分:1)
在Django中,您可以使用Q()
个对象进行OR搜索。
from django.db.models import Q
link = link.strip('/')
Page.objects.filter(Q(url=link)|Q(url=link+'/')
正如丹尼尔在评论中所建议的那样,更好的方法是在添加网址时对网址进行规范化,这样他们要么都有斜杠,要么都没有。