2014-06-17 36 views
0

我有一個模型,它需要的URL:如何查詢URLField在Django

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) 

我試圖篩選具有相同的URL中,如下所示LINK_URL場行:

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

其中linkurl是捕獲link_url的後期數據的變量。我已經有一些條目具有相同的URL,但它返回空白列表。

是否有不同的方式來過濾URLField?我google了,但似乎我是第一個面臨這個問題,否則我只是在代碼中丟失一些瑣碎的東西。

我試過從python manage.py外殼,它也返回空白列表。不過,我可以使用其他非網址字段進行過濾。

的網址是:

http://www.google.com 

或這樣的事情。變量

linkurl = request.POST['link_url']. 

拼命編碼像

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

,但沒有成功的價值。

+0

你可以粘貼你想過濾的url的樣本嗎? (包括linkurl和link_url條目) – petkostas

+1

是的,我認爲你需要擴展「捕獲link_url的post數據的變量」。上面的查詢只有在「linkurl」等於數據庫中保存的整個url時纔有效。 –

+0

另外,你不需要做這個'filter(Q(link_url = linkurl))'你可以做'filter(link_url = linkurl)' – Anentropic

回答

1

您是否已驗證您要搜索的網址與數據庫中的網址相同? Django的URLField在保存時標準化URL,如果它只是一個域,則會在末尾添加一個斜槓。這是否工作?

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

是的!這是尾隨的斜線。填寫表格時,尾部斜線通常會被忽略,並且linkurl正在取回沒有斜線的後部數據。感謝您的注意。 – escapee