如何在Django中查询URLField

时间:2014-06-17 15:00:31

标签: django django-models filter

我有一个需要网址的模型:

class LinkCT(models.Model):
    link_id = models.AutoField(primary_key=True)
    link_slug = models.SlugField(null=False,blank=False)
    link_title = models.CharField(max_length=500, null=False, blank=False)
    link_desc = models.TextField(null=True, blank=True)
    link_url = models.URLField(null=False, blank=False)

我正在尝试过滤link_url字段中具有相同网址的行,如下所示:

duplicateChk = LinkCT.objects.filter(Q(link_url = linkurl))

其中linkurl是一个捕获link_url后期数据的变量。我已经有一些具有相同网址的条目,但它返回空白列表。

有没有不同的方法来过滤URLField?我用谷歌搜索了它,但似乎我是第一个面临这个问题的人,或者我只是在代码中遗漏了一些微不足道的东西。

我试过从python manage.py shell,它还返回空白列表。但是,我可以使用其他非url字段进行过滤。

网址是:

http://www.google.com 

或类似的东西。变量

linkurl = request.POST['link_url']. 

尝试对像

这样的值进行硬编码
duplicateChk = LinkCT.objects.filter(Q(link_url = "http://www.google.com")),

但没有成功。

1 个答案:

答案 0 :(得分:1)

您是否确认您要搜索的网址与数据库中的网址相同? Django的URLField在保存时规范化URL,如果它只是一个域,则在末尾添加斜杠。这有用吗?

duplicateChk = LinkCT.objects.filter(link_url = "http://www.google.com/")