2014-06-17 6 views
0

에 URLField를 조회하는 방법 :나는 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을 행 필터링하기 위해 노력하고 있습니다 :

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

입니다 link_url의 게시물 데이터를 포착하는 변수입니다. 이미 동일한 URL을 가진 항목이 있지만 빈 목록이 반환됩니다.

URLField를 필터링하는 다른 방법이 있습니까? 나는 그것을 찾았지만, 나는이 문제에 직면 한 첫 번째이거나 그렇지 않으면 코드에서 사소한 것을 놓치고있는 것 같다.

나는 파이썬 manage.py 쉘에서 시도했다. 빈리스트도 리턴한다. 그러나 다른 비 URL 필드로 필터링 할 수 있습니다.

URL이이 같은

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의 게시물 데이터를 잡는 변수"를 확장해야한다고 생각합니다. 위의 쿼리는 "linkurl"이 데이터베이스에 저장된 전체 URL과 동일한 경우에만 작동합니다 . –

+0

또한'filter (link_url = linkurl)'할 수있는'filter (Q (link_url = linkurl))'을 할 필요가 없다. – Anentropic

답변

1

찾고있는 URL이 데이터베이스의 URL과 동일한 지 확인 했습니까? Django의 URLField는 저장시 url을 정규화하고 단지 도메인 일 경우 끝에 슬래시를 추가합니다. 이게 효과가 있니?

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

예! 그것은 슬래시 뒤에있었습니다. 양식을 채우는 동안 후행 슬래시는 일반적으로 무시되며 linkurl은 후행 슬래시가없는 게시물 데이터를 가져옵니다. 고지를 가져 주셔서 감사합니다. – escapee

관련 문제