Hai, yang di sana!
Saya tahu masalah ini telah diatasi di sini , tetapi saya tidak dapat menemukan solusi yang tepat.
Saya memiliki model dengan kelas Toko yang berisi berbagai informasi tentang toko yang berbeda dan termasuk juga bidang dengan image = models.ImageField untuk ditampilkan saat menanyakannya.
Saya mencoba semuanya dari dokumen, tetapi tampaknya mengabaikan pengecualian saya dan juga bidang yang saya filter
class StoreFilter(django_filters.FilterSet):
class Meta:
model = Store
exclude = ['image']
fields = {
'name': ['exact', 'contains'],
'created': ['exact', 'year__gt'],
}
Inilah yang saya coba filter dan itu terus membuat saya AssertionError itu, tahu apa yang mungkin saya lewatkan? Segera setelah saya mengomentari baris gambar di models.py saya, itu berfungsi (tetapi itu menunjukkan semua bidang, tidak hanya nama dan buat yang saya filter. Setiap petunjuk akan dihargai.
salam Hormat
Hai @msbt - Saya berani bertaruh bahwa beberapa informasi telah ditinggalkan di sini. Saya menjalankan tes cepat, dan AssertionError
yang disebutkan tidak dinaikkan. Seperti yang Anda lihat di bawah, tidak ada filter untuk bidang gambar yang dibuat.
```python
dari model impor Django.db
Toko kelas (models.Model):
nama = model. CharField(max_length=80)
dibuat = model.DateField()
gambar = model.ImageField()
impor django_filters
kelas StoreFilter(Django_filters.FilterSet):
kelas Meta:
model = Toko
kecualikan = ['gambar']
bidang = {
'nama': ['tepat', 'berisi'],
'dibuat': ['tepat', 'tahun__gt'],
}
Di [8]: StoreFilter.base_filters
Keluar[8]:
DipesanDict([('nama',
('nama__berisi',
('diciptakan',
('dibuat__tahun__gt',
````
Bisakah Anda memberikan model lengkap & kode filter? Jika tidak, contoh suling yang menunjukkan masalah ini akan sangat membantu.
Hei, terima kasih sudah kembali padaku! Beri saya sedikit lebih banyak waktu untuk mencari tahu apa yang mungkin saya lakukan salah, akan memalukan jika itu adalah kesalahan pemula ;)
Hai @msbt - apakah Anda pernah mengetahui apa yang sedang terjadi, atau bisakah ini ditutup?
Saya tidak punya waktu sekarang, jadi mari kita tutup dan kunjungi kembali ketika saya mencoba lagi dan macet ;)
@msbt Adakah ide tentang masalah ini? Saya memiliki yang sama
@georgezouq jangan takut, menyerah proyek karena berbagai alasan dan tidak pernah menemukan solusi
Silakan dilacak. 😀.
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 boleh lihat
itu mengabaikan penggantian saya karena saya menggunakan tampilan umum. ini untuk sementara memecahkan masalah saya tetapi klien saya mengganggu saya dalam kekhususan filternya lol. Bisakah Anda melihat ini?
urlpatterns = [
path('', views.StadiumFilterView.as_view(model=Stadium,
filterset_fields=['name', 'country']), name="stadium_index"),
]
bidang, kecualikan, filter_overrides di Meta tidak menyelesaikan kesalahan AssertionError
ini, ketika saya menggunakan FilterView
+ filter_class = MyFilterSet
, saya harus mengatur filter_fields di bawah tampilan untuk mengecualikan bidang,
jika tidak def filter_for_field(cls, f, name, lookup_expr='exact')
akan dijalankan melalui semua bidang
Komentar yang paling membantu
Hai @msbt - Saya berani bertaruh bahwa beberapa informasi telah ditinggalkan di sini. Saya menjalankan tes cepat, dan
AssertionError
yang disebutkan tidak dinaikkan. Seperti yang Anda lihat di bawah, tidak ada filter untuk bidang gambar yang dibuat.```python
model
dari model impor Django.db
Toko kelas (models.Model):
nama = model. CharField(max_length=80)
dibuat = model.DateField()
gambar = model.ImageField()
filter
impor django_filters
kelas StoreFilter(Django_filters.FilterSet):
kelas Meta:
model = Toko
kecualikan = ['gambar']
bidang = {
'nama': ['tepat', 'berisi'],
'dibuat': ['tepat', 'tahun__gt'],
}
keluaran konsol
Di [8]: StoreFilter.base_filters),),),)])
Keluar[8]:
DipesanDict([('nama',
('nama__berisi',
('diciptakan',
('dibuat__tahun__gt',
````
Bisakah Anda memberikan model lengkap & kode filter? Jika tidak, contoh suling yang menunjukkan masalah ini akan sangat membantu.