【问题标题】:How to query URLField in Django如何在 Django 中查询 URLField
【发布时间】:2014-06-18 06:41:25
【问题描述】:

我有一个带有 url 的模型:

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 字段中具有相同 url 的行,如下所示:

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

其中 linkurl 是一个变量,用于捕获 link_url 的发布数据。我已经有一些具有相同 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")),

但没有成功。

【问题讨论】:

  • 您可以粘贴您要过滤的网址示例吗? (linkurl 和 link_url 条目。
  • 是的,我认为您需要扩展“捕获link_url 的帖子数据的变量”。上面的查询只有在“linkurl”等于数据库中保存的整个 url 时才有效。
  • 另外,你不需要这样做filter(Q(link_url = linkurl))你可以这样做filter(link_url=linkurl)
  • 你能硬编码linkurl值来看看它是否工作吗?如果是,则意味着您的数据与您对 POST 的预期不同。
  • 网址是'google.com'或类似的东西。变量'linkurl = request.POST['link_url']'。尝试对值进行硬编码,例如“duplicateChk = LinkCT.objects.filter(Q(link_url = 'google.com'))”,但没有成功。

标签: django django-models filter


【解决方案1】:

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

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

【讨论】:

  • 是的!它是斜杠。在填写表格时,通常会忽略尾部斜杠,并且 linkurl 正在获取没有尾部斜杠的帖子数据。感谢您的关注。
猜你喜欢
  • 2011-03-29
  • 2011-05-29
  • 2013-12-23
  • 2013-04-24
  • 2013-12-29
  • 1970-01-01
  • 1970-01-01
  • 2011-02-17
  • 2017-04-06
相关资源
最近更新 更多