鉴于这两个模型:
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 个字符后停止搜索并且不打扰刷新。