django - ForeignKeyAutocompleteAdmin

标签 django django-admin django-extensions

给定这两个模型:

class Product(Model):
    upc = CharField(max_length=96, unique=True)
    ...
    class Meta:
        app_label = 'scrapers'

class Order(Model):
    ...
    product = ForeignKey('scrapers.Product', related_name='orders', on_delete=models.CASCADE)
    objects = OrderManager()

    class Meta:
        app_label = 'scrapers'

还有这个 admin.py:

class OrderAdmin(ForeignKeyAutocompleteAdmin):
    related_search_fields = {
        'product': ('upc', 'retailer_offerings__name')
    }
    fields = ('product', 'client', 'completed', 'expires', 'amount', 'filled')


admin.site.register(Order, OrderAdmin)

完成 collectstatic 并在 INSTALLED_APPS 中声明了 django_extensions 和我的应用程序。为什么我得到这个:

[04/Dec/2016 05:54:28] "GET /admin/scrapers/product/foreignkey_autocomplete/?search_fields=upc&app_label=scrapers&model_name=product&q=045496 HTTP/1.1" 302 0
Not Found: /admin/scrapers/product/foreignkey_autocomplete/change/
[04/Dec/2016 05:54:28] "GET /admin/scrapers/product/foreignkey_autocomplete/change/ HTTP/1.1" 404 1875

在输入框输入时(左边的框不是右边的pk输入)?

Product 表有数百万行,默认的管理配置不能很好地处理这个问题,所以我尝试了扩展包解决方案。该小部件正在请求 product/foreignkey_autocomplete 但通过 manage.py show_urls 的快速 grep 显示只有/orders 已注册到 foreignkeyautocomplete 包。我在文档中没有看到任何关于 url 配置的内容(我假设这是在向管理员注册时完成的)。我怎样才能让它工作?

部分解决方案:

在检查 url 并意识到它试图将搜索查询发送到/product/foreignkey_autocomplete/... 之后,我也尝试为该模型创建一个空的管理员。它有效,但行为仍然很奇怪。输入 4-5 个字符后似乎停止搜索并且不费心刷新。

最佳答案

根据我的更新,为关系的另一端添加一个 ForeignKeyAutocompleteAdmin 创建了丢失的 url,并且该功能似乎可以工作

关于django - ForeignKeyAutocompleteAdmin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40955908/

相关文章:

python - 使用带有模型继承的过滤器

django - 基于列表显示中的自定义可调用项在 Django Admin 中进行排序

database - 在两个django服务器之间同步数据

python - 如何使用Django管理界面正常显示上传的文件?

python - 按照 Django 网站上的教程进行操作时出错

python - 在 Django 中管理静态文件

django - users_user_permissions 和 auth_permission 和 auth_group_permissions 有什么区别?

python - 从其他字段计算的 Django 模型字段

flask - 如何将 ptiPython 与 Flask-Script 一起使用?

python - Django 扩展 - dumpscript 无法正常工作