2013-09-04 39 views
5

Tôi có một queryset (được lọc trên thực tế) như sauLàm thế nào để chuyển đổi một danh sách để queryset django

posts = [<Post: published>, <Post: needs>, <Post: be>, <Post: issues>, <Post: to>, <Post: tags>] 

Nhưng tôi cần phải lọc queryset trên tay với một số lĩnh vực đến từ một bảng/nơi vv

một cái gì đó vì vậy tôi đã lọc như dưới đây

custom_list = [] 

for rec in posts: 
    if 'string_or_field' in rec.tags.all(): 
     custom_list.extend(rec) 

     or 

custom_list = [rec for rec in posts if 'string_or_field' in rec.tags.all()] 

vì vậy, khi chúng ta có thể quan sát ở trên chúng ta đang tạo một list bằng cách lọc một queryset, nhưng tôi muốn kết quả là queryset.

Vì vậy, có cách nào để chuyển đổi đối tượng list thành queryset không?

+0

Tại sao bạn cần một bộ truy vấn thực tế? Điểm của cách gõ vịt là bạn có thể sử dụng bất kỳ cấu trúc nào giống như danh sách. –

+0

có thực sự tôi cần một queryset để thực hiện một số hoạt động vì nó là một đối tượng, nhưng tôi có một danh sách như trên, vì vậy muốn chuyển đổi danh sách kết quả thành queryset –

Trả lời

9

Bạn có thể truy vấn các đối tượng Tag đầu tiên và lọc Post với các id đó:

tags = Tag.objects.filter(field_name='string_or_field') 
posts = Post.objects.filter(tags__in=tags) 
7

Trên thực tế tôi đã tìm thấy một con đường bởi googling, nhưng điều này có thể mất rất nhiều thời gian để truy vấn/tạo ra kết quả nếu có số lượng lớn các hồ sơ

custom_list = [rec.id for rec in posts if 'string_or_field' in rec.tags.all()] 

querset = MyModel.objects.filter(id__in=custom_list)