मैं django-filter का उपयोग कर django-graphene के अपने रिज़ॉल्वर में एक फ़ील्ड जोड़ना चाहता हूं। आम तौर पर मेरे संकल्प इस तरह दिखेगा:django-graphene के साथ एनोटेट करें और फ़िल्टर
my_model = DjangoFilterConnectionField(
MyModelNode,
filterset_class=MyModelFilter)
def my_resolver(self, args, context, info):
return MyModelFilter(
data=format_query_args(args),
queryset=self).qs
जो ठीक काम करता है।
हालांकि, मैं मॉडल फ़िल्टर को कस्टम क्वेरीसेट प्रदान करना चाहता हूं ताकि मैं फ़ील्ड पर एकत्रीकरण कर सकूं। मैं इस तरह कुछ करने के लिए कोशिश कर रहा हूँ:
def my_resolver(self, args, context, info):
queryset = MyModel.objects.values(
'customer_id').annotate(
cost_amt=Sum('cost_amt', output_field=FloatField()))
return MyModelFilter(
data=format_query_args(args),
queryset=queryset).qs
GraphiQL में कच्चे एसक्यूएल का निरीक्षण करने से यह सही लग रहा है। हालांकि, त्रुटि संदेश मैं GraphQL से प्राप्त
"message": "Received incompatible instance \"{'cost_amt': 260.36, 'customer_id': 300968697}\"."
है यह सही परिणाम है, लेकिन मैं अनिश्चित हूँ क्यों GraphQL Django-ग्राफीन से इस वस्तु हो रही है। मैं एक कस्टम क्वेरीसेट कैसे प्रदान कर सकता हूं और यह काम कर सकता हूं?
प्रतिक्रिया के लिए धन्यवाद। मैंने .raw() पर स्टैब पर लिया, लेकिन यह एक RawQuerySet और django-graphene और django-filter वास्तव में एक क्वेरीसेट चाहता है। यह बम है क्योंकि RawQuerySet में एक .all() विधि नहीं है जो django-filter परिणाम पर कॉल करने का प्रयास करता है। – duffn