【问题标题】:Django Admin: change select box for foreign key to search autocomplete, like search objectsDjango Admin:更改外键的选择框以搜索自动完成,例如搜索对象
【发布时间】:2015-06-15 04:29:16
【问题描述】:

Django 管理面板在模型对象列表中有一个带有search_fields 的搜索自动完成功能,但现在我有 3000 个用户。选择框很难手动添加用户;我需要与搜索字段相同的行为来选择用户外键User

如何在管理面板内的表单中包含 Django 搜索功能以进行编辑?

from myapp.models import Red 
from django.contrib.auth.models import User

class Red(models.Model):
    customer = models.ForeignKey(User, verbose_name="Cliente")
    pub_date = models.DateTimeField(default=datetime.now, blank=True)

【问题讨论】:

  • 为什么不能考虑将search_fields 添加到ModelAdmin 中?我的意思是,如果您创建一个 ModelAdmin 并考虑将 customer 添加为 search_fields ?
  • 搜索字段我正在使用,但我需要编辑表单,比如从 django admin 创建或修改对象。

标签: python django search autocomplete django-admin


【解决方案1】:

从 Django 2.0 开始,您可以使用 autocomplete_fields 为外键生成自动完成字段。

class UserAdmin(admin.ModelAdmin):
    search_fields = ['username', 'email']

class RedAdmin(admin.ModelAdmin):
    autocomplete_fields = ['customer']

【讨论】:

  • 有没有办法让search_fields 只针对autocomplete_fields ?我搜索的字段多于我想要的自动填充字段。
【解决方案2】:

Django 没有内置的外键自动完成功能,但 raw_id_fields 选项可能会有所帮助:

class RedAdmin(admin.ModelAdmin):
    raw_id_fields = ("customer", )

如果你想要真正的自动完成,那么你必须使用像django-autocomplete-light 或一些other solutions 这样的第三方应用程序。

【讨论】:

  • 这应该是公认的答案。 raw_id_fields 的好主意!
猜你喜欢
  • 2023-03-22
  • 2018-07-14
  • 2015-07-24
  • 1970-01-01
  • 2021-03-03
  • 2013-08-20
  • 2019-02-25
  • 2011-01-05
  • 1970-01-01
相关资源
最近更新 更多