2014-05-20 2 views
0

저는 바코드 목록을 저장하는 모델을 가지고 있습니다. 지금은 내가 각 바코드 행 숯불 형식의 바코드의 목록을 포함 즉, 바코드 123456Django 필터 쿼리

class A(models.Model): 
    barcode = models.Charfield(max_length = 255) 

내가 [u'123456', u'457798799']로 바코드를 저장하여 해당 행을 필터링 할 123456, 바코드를했습니다.

이제 바코드가 123456 인 행을 필터링하려고합니다. 어떻게해야합니까?

+0

'[u "123456", u "234234"]'을 (를) 문자열로 저장 하시겠습니까? – ProfHase85

+0

예. 그 문자열은 다시 목록으로 변환 될 수 있습니다. – PythonEnthusiast

+0

난 그냥 모든 행을 하나씩 확인하고 싶지 않아 – PythonEnthusiast

답변

1

이 솔루션은 다음과 같습니다 그와

A.objects.filter(barcode__contains='123456') 

하면 바코드가 원하는 문자열을 포함하는 모든 객체의 목록을 얻을 것이다. 다음 https://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey

class A(models.Model): 
    name = models.Charfield(max_length=50) 

class Bcode(models.Model): 
    barcode = models.IntegerField() 
    a = models.ForeignKey(A) 

당신이 얻을 수있는 모든 바코드 A -instance에서 :

a_instance.bcode_set.all() 
가 적절한 의미 솔루션으로

어쨌든, I는 ForeignKey 관계를 사용하는 것이 좋습니다

그리고 다음과 같이 바코드에 대한 A 인스턴스를 얻을 수 있습니다.

b = Bcode.objects.get(123456) 
b.a.name 
+0

외래 키? 방법? 그것을 사용하기위한 더미 아키텍처를 명시 해 주시겠습니까? – PythonEnthusiast