Программирую БД на Django и столкнулся с проблемой по поиску в админке с полем ForeignKey. Есть модель и поиск по трём полям:
manage.py
class Suppliers_goods(models.Model):
Product_code = models.AutoField(primary_key=True, name='Код товара')
Product_Name = models.CharField('Название товара', unique=True, max_length=100)
Pharm_Group_SG = models.ForeignKey('Pharmacological_group', to_field='Pharm_Group', on_delete=models.PROTECT,
null=True, verbose_name='ФармГруппа', related_name='Pharm_Group_SG')
Packing_form = models.CharField('Форма упаковки', unique=True, max_length=100)
Manufacturer = models.CharField('Производитель', max_length=100)
Supplier_name_SG = models.ForeignKey('Suppliers', to_field='Supplier_name', on_delete=models.PROTECT, null=True,
verbose_name='Название поставщика', related_name='Supplier_name_SG')
The_price_of_the_product = models.PositiveIntegerField('Цена товара в рублях')
admin.py
class Suppliers_goodsAdmin(admin.ModelAdmin):
list_display = ('Product_Name', 'Pharm_Group_SG', 'Packing_form', 'Manufacturer', 'Supplier_name_SG',
'The_price_of_the_product')
search_fields = ['Product_Name', 'Pharm_Group_SG', 'Packing_form']
При вбивании в поиск слова выводит вот это:
FieldError at /admin/database/sales/
Related Field got invalid lookup: icontains
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/database/sales/?q=%D1%8D
Django Version: 4.1.5
Exception Type: FieldError
Exception Value: Related Field got invalid lookup: icontains
Exception Location: C:\Users\Mick\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\sql\query.py, line 1292, in build_lookup
Raised during: django.contrib.admin.options.changelist_view
Python Executable: C:\Users\Mick\AppData\Local\Programs\Python\Python311\python.exe
Python Version: 3.11.1
В интернете нашёл что надо добавить "__name", вот так:
class Suppliers_goodsAdmin(admin.ModelAdmin):
list_display = ('Product_Name', 'Pharm_Group_SG', 'Packing_form', 'Manufacturer', 'Supplier_name_SG',
'The_price_of_the_product')
search_fields = ['Product_Name', 'Pharm_Group_SG__name', 'Packing_form']
Но выводится тоже ошибка, но другая:
FieldError at /admin/database/suppliers_goods/
Related Field got invalid lookup: name
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/database/suppliers_goods/?q=%D1%8D
Django Version: 4.1.5
Exception Type: FieldError
Exception Value: Related Field got invalid lookup: name
Exception Location: C:\Users\Mick\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\sql\query.py, line 1466, in build_filter
Raised during: django.contrib.admin.options.changelist_view
Python Executable: C:\Users\Mick\AppData\Local\Programs\Python\Python311\python.exe
Python Version: 3.11.1
Подскажите, пожалуйста, как это можно исправить? Или как-то подругому можно организовать поиск в админке?
А то искал в Django документации, но не нашёл то что подходит.