Django-filter: يحتوي على مرشح لا يعمل

تم إنشاؤها على ١٦ يناير ٢٠١٧  ·  4تعليقات  ·  مصدر: carltongibson/django-filter

class OrderFilter(django_filters.FilterSet):
    class Meta:
        model = Order
        fields = {
            'status': ['exact',],
            'client': ['icontains',],
        }
class OrderViewset(viewsets.ModelViewSet):
    filter_class = OrderFilter
    permission_classes = ( permissions.IsAuthenticated, )
    serializer_class = OrderSerializer
    queryset = Order.objects.all()
    filter_backends = (
        filters.OrderingFilter,
        filters.SearchFilter,
        filters.DjangoFilterBackend
    )
    ordering_fields = ('added_at', 'status', 'client', 'order_number')
    ordering = ('-added_at',)
class Order(models.Model):
    order_number = models.CharField(max_length=255, default='')
    client = models.CharField(max_length=255, default='')
    status = models.CharField(max_length=255, default='')
    added_at = models.DateTimeField(auto_now_add=True)

يتم تجاهل عامل تصفية العميل بشكل أساسي. إذا قمت باستبدال icontains بدقة ، فإنه يعمل.
لكن لا يمكنني الحصول على محتويات أو عناصر للعمل في أي مجال.

Requirements.txt:

جانغو == 1.10.4
psycopg2 == 2.6.2
djangorestframework == 3.5.3
القنوات == 1.0.0
djangorestframework-jwt == 1.9.0
مرشح django == 1.0.1
asgi-redis == 1.0.0
دافني == 1.0.0

التعليق الأكثر فائدة

مرحبًا xtrinch - هل يمكنك نشر نموذج URL مع معلمات الاستعلام؟ أعتقد أنك تستعلم عن /api/orders?status=foo بدلاً من /api/orders?status__icontains=foo . توجد ملاحظة في مستندات Meta.fields تشرح السلوك المختلف قليلاً لعمليات البحث عن exact .

ال 4 كومينتر

مرحباxtrinch.

من الوصف لا يمكنني رؤية مشكلة. هل يمكنني أن أنصحك بمحاولة وضع نقطة توقف في ملكيتك FilterSet 's qs وتخطي لمعرفة ما يحدث.

إذا كان بإمكانك تضييقها إلى حالة اختبار بسيطة ، فسيكون ذلك مفيدًا أيضًا.

يأخذ Filter القيمة فقط وينشئ بحثًا عن ORM ، لذا فإن السؤال هو ، أين يحدث هذا الخطأ؟ _

مرحبًا xtrinch - هل يمكنك نشر نموذج URL مع معلمات الاستعلام؟ أعتقد أنك تستعلم عن /api/orders?status=foo بدلاً من /api/orders?status__icontains=foo . توجد ملاحظة في مستندات Meta.fields تشرح السلوك المختلف قليلاً لعمليات البحث عن exact .

rpkilby شكرا. كنت أتصور أن العنصر الأول في المصفوفة يصبح المرشح الافتراضي - أرى أنني كنت مخطئًا :)

منشورك مفيد جدا بالنسبة لي في مشروعي
شكرا

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات