أهلا!
أعلم أنه تمت معالجة هذه المشكلة هنا بالفعل ، لكن لا يمكنني العثور على حل مناسب.
لدي نموذج به فئة Store تحتوي على معلومات متنوعة حول متاجر مختلفة ويتضمن أيضًا حقلاً به image = Models.ImageField لعرضه عند الاستعلام عنه.
لقد جربت كل شيء من المستندات ، ولكن يبدو أنه يتجاهل الاستثناء الخاص بي وكذلك الحقول التي أقوم بالترشيح من أجلها
class StoreFilter(django_filters.FilterSet):
class Meta:
model = Store
exclude = ['image']
fields = {
'name': ['exact', 'contains'],
'created': ['exact', 'year__gt'],
}
هذا ما أحاول التصفية من أجله ويستمر في إلقاء خطأ التأكيد هذا ، أي فكرة عما قد أفتقده؟ بمجرد أن أعلق على سطر الصورة في Models.py الخاص بي ، فإنه يعمل (لكنه يعرض جميع الحقول ، وليس فقط الاسم والتكوين الذي كنت أقوم بترشيحه من أجله. سيكون موضع تقدير أي مؤشرات.
مع أطيب التحيات
مرحبًا msbt - أراهن على ترك بعض المعلومات هنا. أجريت اختبارًا سريعًا ، ولم يتم جمع AssertionError
المذكور. كما ترى أدناه ، لم يتم إنشاء أي فلتر لحقول الصورة.
"" الثعبان
من نماذج الاستيراد django.db
متجر فئة (طرازات. نموذج):
الاسم = النماذج. CharField (max_length = 80)
تم الإنشاء = Models.DateField ()
الصورة = النماذج.
استيراد django_filters
فئة StoreFilter (django_filters.FilterSet):
فئة ميتا:
النموذج = مخزن
استبعاد = ['صورة']
الحقول = {
'الاسم': ['دقيق'، 'يحتوي على']،
"تم إنشاؤه": ["دقيق"، "year__gt"]،
}
في [8]: StoreFilter.base_filters
خارج [8]:
OrderedDict ([('name'،
("name__contains" ،
('خلقت'،
('تم إنشاؤه__year__gt' ،
""
هل يمكنك تقديم النموذج الكامل ورمز الفلتر؟ إذا لم يكن الأمر كذلك ، فسيكون من المفيد استخدام مثال مقطر يوضح المشكلة.
مرحبًا ، شكرًا لعودتك إلي! امنحني مزيدًا من الوقت لمعرفة الخطأ الذي قد أكون قد ارتكبه ، سيكون محرجًا إذا كان خطأ مبتدئًا ؛)
مرحبًا msbt - هل اكتشفت يومًا ما الذي كان يحدث ، أم يمكن إغلاق هذا؟
ليس لدي وقت الآن ، لذا دعنا نغلقها ونعيد زيارتها عندما أحاول مرة أخرى وأتعثر ؛)
msbt أي فكرة عن هذه المشكلة؟ لدي مثلها
georgezouq خائف لا ، تخلى عن المشروع لأسباب مختلفة ولم تجد حلاً
الرجاء التتبع. 😀
Internal Server Error: /stadiums/
Traceback (most recent call last):
File "C:\Users\default_user\PycharmProjects\pina_colada\venv\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
response = get_response(request)
File "C:\Users\default_user\PycharmProjects\pina_colada\venv\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\default_user\PycharmProjects\pina_colada\venv\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\default_user\PycharmProjects\pina_colada\venv\lib\site-packages\django\views\generic\base.py", line 68, in view
return self.dispatch(request, *args, **kwargs)
File "C:\Users\*\PycharmProjects\pina_colada\venv\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
return handler(request, *args, **kwargs)
File "C:\Users\*\PycharmProjects\pina_colada\venv\lib\site-packages\django_filters\views.py", line 77, in get
filterset_class = self.get_filterset_class()
File "C:\Users\*\PycharmProjects\pina_colada\venv\lib\site-packages\django_filters\views.py", line 35, in get_filterset_class
return filterset_factory(model=self.model, fields=self.filterset_fields)
File "C:\Users\*\PycharmProjects\pina_colada\venv\lib\site-packages\django_filters\filterset.py", line 459, in filterset_factory
(FilterSet,), {'Meta': meta})
File "C:\Users\default_user\PycharmProjects\pina_colada\venv\lib\site-packages\django_filters\filterset.py", line 71, in __new__
new_class.base_filters = new_class.get_filters()
File "C:\Users\default_user\PycharmProjects\pina_colada\venv\lib\site-packages\django_filters\filterset.py", line 345, in get_filters
filters[filter_name] = cls.filter_for_field(field, field_name, lookup_expr)
File "C:\Users\default_user\PycharmProjects\pina_colada\venv\lib\site-packages\django_filters\filterset.py", line 377, in filter_for_field
) % (cls.__name__, field_name, lookup_expr, field.__class__.__name__)
AssertionError: StadiumFilterSet resolved field 'graphic' with 'exact' lookup to an unrecognized field type FileField. Try adding an override to 'Meta.filter_overrides'. See: https://django-filter.readthedocs.io/en/master/ref/filterset.html#customise-filter-generation-with-filter-overrides
[13/Dec/2018 08:23:58] "GET /stadiums/?page=1 HTTP/1.1" 500 108150
class StadiumFilter(django_filters.FilterSet):
name = django_filters.CharFilter(lookup_expr='iexact')
class Meta:
model = Stadium
exclude = ['graphic']
filter_overrides = {
models.FileField: {
'filter_class': django_filters,
'extra': lambda f: {
'lookup_expr': 'icontains',
},
},
}
carltongibson هل يمكنك إلقاء نظرة
كان يتجاهل التجاوزات منذ أن كنت أستخدم طريقة عرض عامة. لقد أدى هذا إلى حل مشكلتي مؤقتًا ولكن موكلي يزعجني في خصوصية مرشحاته. هل يمكنك النظر في هذا
urlpatterns = [
path('', views.StadiumFilterView.as_view(model=Stadium,
filterset_fields=['name', 'country']), name="stadium_index"),
]
الحقول ، استبعاد ، filter_overrides في Meta لا تحل هذا الخطأ AssertionError
، عندما أستخدم FilterView
+ filter_class = MyFilterSet
، يجب أن أضبط filter_fields تحت العرض لاستبعاد الحقول ،
وإلا سيتم تشغيل def filter_for_field(cls, f, name, lookup_expr='exact')
عبر كافة الحقول
التعليق الأكثر فائدة
مرحبًا msbt - أراهن على ترك بعض المعلومات هنا. أجريت اختبارًا سريعًا ، ولم يتم جمع
AssertionError
المذكور. كما ترى أدناه ، لم يتم إنشاء أي فلتر لحقول الصورة."" الثعبان
عارضات ازياء
من نماذج الاستيراد django.db
متجر فئة (طرازات. نموذج):
الاسم = النماذج. CharField (max_length = 80)
تم الإنشاء = Models.DateField ()
الصورة = النماذج.
المرشحات
استيراد django_filters
فئة StoreFilter (django_filters.FilterSet):
فئة ميتا:
النموذج = مخزن
استبعاد = ['صورة']
الحقول = {
'الاسم': ['دقيق'، 'يحتوي على']،
"تم إنشاؤه": ["دقيق"، "year__gt"]،
}
إخراج وحدة التحكم
في [8]: StoreFilter.base_filters) ،) ،) ،)])
خارج [8]:
OrderedDict ([('name'،
("name__contains" ،
('خلقت'،
('تم إنشاؤه__year__gt' ،
""
هل يمكنك تقديم النموذج الكامل ورمز الفلتر؟ إذا لم يكن الأمر كذلك ، فسيكون من المفيد استخدام مثال مقطر يوضح المشكلة.