-1
필터링 할 ID 목록이있는 경우 어떻게 쿼리를 생성 할 수 있습니까? 예를 들어 :Django에서 쿼리를 생성하는 방법은 무엇입니까?
[14, 44]
내가 해키이
(I 위의 SQL의 T4
는하지만 문제, 즉 다른 질문에 대해 무엇을 알고하지 않습니다) query.filter(tags__tag_id=14).filter(tags__tag_id=44)
>>> print(Place.objects.filter(tags__tag_id=14).filter(tags__tag_id=44).query)
SELECT "places_place"."id", "places_place"."address"
FROM "places_place"
INNER JOIN "places_placetag"
ON ("places_place"."id" = "places_placetag"."place_id")
INNER JOIN "places_placetag"
T4 ON ("places_place"."id" = T4."place_id")
WHERE ("places_placetag"."tag_id" = 14 AND T4."tag_id" = 44)
초래
tag_ids = [14, 44]
query_string = 'Place.objects'
for tag_id in tag_ids:
query_string += ('.filter(tags___tag_id=' + str(tag_id))
query = eval(query_string)
: 마음에 솔루션은, 그러나 엿 보이는 순진하고있어, 그것을 할 수있는 더 좋은 방법이 있어야합니다
class Place(models.Model):
address = models.CharField(max_length=123)
class PlaceTag(models.Model):
place = models.ForeignKey('Place', models.CASCADE, 'tags')
tag = models.ForeignKey('Tag', models.CASCADE, 'places')
class Tag(models.Model):
tag = models.CharField(max_length=254)