मैं इस तरह के एक बुक मॉडल है एक सूची में सभी वस्तुओं पर ManyToMany फिल्टर मिलानDjango: संक्षेप में</p> <pre><code>class Book(models.Model): authors = models.ManyToManyField(Author, ...) ... </code></pre> <p>:
मैं पुस्तकें जिनके लेखकों को कड़ाई से एक के बराबर हैं पुनः प्राप्त करना चाहते हैं लेखकों का दिया गया सेट। मुझे यकीन नहीं है कि एक ऐसी क्वेरी है जो यह करती है, लेकिन कोई सुझाव उपयोगी होगा।
लंबे में:
यहाँ मैं क्या करने की कोशिश की है,
# A sample set of authors
target_authors = set((author_1, author_2))
# To reduce the search space,
# first retrieve those books with just 2 authors.
candidate_books = Book.objects.annotate(c=Count('authors')).filter(c=len(target_authors))
final_books = QuerySet()
for author in target_authors:
temp_books = candidate_books.filter(authors__in=[author])
final_books = final_books and temp_books
(है कि एक AttributeError हो रही चलाने के लिए विफल) ... और यहाँ है कि मैं क्या मिला:
AttributeError: 'NoneType' object has no attribute '_meta'
आम तौर पर, मुझे इस समस्या के साथ एक मॉडल से कैसे पूछना चाहिए कि इसके कई क्षेत्रों में दिए गए ऑब्जेक्ट्स का एक सेट मेरे मामले में है?
ps: मुझे कुछ प्रासंगिक SO प्रश्न मिले लेकिन स्पष्ट उत्तर नहीं मिला। कोई भी अच्छा सूचक भी सहायक होगा। धन्यवाद।
लगभग वहां। इस प्रश्न में उत्तर देखें: http://stackoverflow.com/questions/8618068/django-filter-queryset-in-for-every-item-in-list –