gpt4 book ai didi

python - 如何在 Django 2.0 中正确设置 autocomplete_fields?

转载 作者:太空宇宙 更新时间:2023-11-04 09:50:33 25 4
gpt4 key购买 nike

尝试在 Django 管理中为 ForeingKey 设置 autocomplete_fields。我不明白如何正确设置它。我阅读了文档,但没有太多关于 autocomplete_fields 的信息,至少对我来说不够。

admin.py

class AdminSettings(admin.ModelAdmin):
filter_horizontal = ('english_word', 'russian_word', 'turkish_word')
list_display = ['circassian_word', 'letter']
autocomplete_fields = ('circassian_word',)
search_fields = ['circassian_word__circassian']

模型.py

class Word(models.Model):
circassian_word = models.ForeignKey(Circassian, blank=True, null=True, on_delete=models.CASCADE, verbose_name='Адыгэбзэ')
letter = models.ForeignKey(Alphabet, null=True, on_delete=models.CASCADE, verbose_name='Буква')
audio = models.FileField(upload_to='audio', blank=True, verbose_name='Озвучка')
turkish_word = models.ManyToManyField(Turkish, blank=True, verbose_name='Türkçe')
english_word = models.ManyToManyField(English, blank=True, verbose_name='English')
russian_word = models.ManyToManyField(Russian, blank=True, verbose_name='Русский')

错误信息

Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x10d07b9d8>
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/utils/autoreload.py", line 225, in wrapper
fn(*args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/management/commands/runserver.py", line 120, in inner_run
self.check(display_num_errors=True)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/management/base.py", line 410, in check
raise SystemCheckError(msg)
django.core.management.base.SystemCheckError: SystemCheckError: System check identified some issues:

ERRORS:
<class 'psalale.admin.AdminSettings'>: (admin.E037) The value of 'autocomplete_fields[0]' refers to 'circassian_word__circassian', which is not an attribute of 'psalale.Word'.

System check identified 1 issue (0 silenced).

最佳答案

正如 docs 中所说:

You must define search_fields on the related object’s ModelAdmin because the autocomplete search uses it.

所以你需要定义

class CircassianAdmin(admin.ModelAdmin):
search_fields = [] # <- list of keys to search by

通过装饰器 @admin.register(Circassian) 或通过 admin.site.register(CircassianAdmin) 注册它

并从 AdminSettings 中删除 search_fields 属性

友情建议:AdminSettings重命名为WordAdmin,可读性更好。

关于python - 如何在 Django 2.0 中正确设置 autocomplete_fields?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47968478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com