هل من الممكن تصفية الحقول المحددة في django.contrib.postgres.fields
مثل ArrayField
؟
لا يحتوي django-filter حاليًا على أي مرشحات متوافقة مع حقول مساهمة postgres - ستحتاج إلى إنشاء مرشحات خاصة بك. سيكون الأمر أكثر أو أقل صعوبة اعتمادًا على ما تحاول القيام به. سيكون دعم عمليات البحث المخصصة لـ ArrayField
تافهًا إلى حد ما:
class CharArrayFilter(filters.BaseCSVFilter, filters.CharFilter):
pass
class MyFilterSet(filters.FilterSet):
tags__contains = CharArrayFilter(name='tags', lookup_expr='contains')
class Meta:
model = SomethingTaggable
GET http://localhost/api/something-taggable?tags__contains=a,b,c
سيقوم المرشح أعلاه بالتحقق من صحة المدخلات المفصولة بفواصل وإرجاع قائمة بالقيم التي تم تنظيفها ، والتي تكون مناسبة للمكالمة الأساسية .filter()
.
من ناحية أخرى ، يعد التعامل مع تحويلات الفهرس والشريحة أكثر تعقيدًا ، وهي غير منظمة ولها عدد لا حصر له من التوليفات نظريًا.
شكرا على المعلومات.
سأغلق هذا على أنه خارج النطاق في الوقت الحالي. يسعدني النظر في طلبات السحب الموثقة والمختبرة. قد تكون لدينا القدرة على إعادة النظر في المستقبل.
تحديث:
تمت إعادة تسمية المعلمة name
إلى field_name
لذا يجب أن يبدو MyFilterSet
كما يلي:
class MyFilterSet(filters.FilterSet):
tags__contains = CharArrayFilter(field_name='tags', lookup_expr='contains')
class Meta:
model = SomethingTaggable
التعليق الأكثر فائدة
لا يحتوي django-filter حاليًا على أي مرشحات متوافقة مع حقول مساهمة postgres - ستحتاج إلى إنشاء مرشحات خاصة بك. سيكون الأمر أكثر أو أقل صعوبة اعتمادًا على ما تحاول القيام به. سيكون دعم عمليات البحث المخصصة لـ
ArrayField
تافهًا إلى حد ما:سيقوم المرشح أعلاه بالتحقق من صحة المدخلات المفصولة بفواصل وإرجاع قائمة بالقيم التي تم تنظيفها ، والتي تكون مناسبة للمكالمة الأساسية
.filter()
.من ناحية أخرى ، يعد التعامل مع تحويلات الفهرس والشريحة أكثر تعقيدًا ، وهي غير منظمة ولها عدد لا حصر له من التوليفات نظريًا.