我有两个对象模型,NewsObject 和 StockObject。stock 对象是 news 对象中的外键。
class stockObject(models.Model):
stock_name = CharField(max_length=100, blank=True, null=True)
stock_tag = CharField(max_length=100, blank=True, null=True)
def __str__(self):
return self.stock_name
class newsObject(models.Model):
title = CharField(max_length=100, blank=True, null=True)
body = TextField(blank=True, null=True)
stock = ForeignKey(stockObject, on_delete=models.SET_NULL, blank=True, null=True)
我在 ModelAdmin 类中使用了 autocomplete_fields 属性,因为我想要新闻中股票的可搜索下拉列表。如文档中所述,我还在股票 ModelAdmin 中添加了 search_fields 。
这就是我的 admin.py 的样子:
class stockAdmin(admin.ModelAdmin):
list_display = ['stock_name', 'stock_tag']
search_fields = ['stock_name']
class newsAdmin(admin.ModelAdmin):
list_display = ['title', 'body', 'stock']
search_fields = ['title', 'body', 'stock']
autocomplete_fields = ['stock']
现在,问题是我在 Django 管理站点上获得了该字段的可搜索下拉列表,但它只是实际模板屏幕上的一个下拉列表(不可搜索)。我有一个调用模板的基本视图,如下所示:
视图.py
def createNews(request):
form = NewsForm()
if request.method == 'POST':
form = NewsForm(request.POST)
if form.is_valid():
form.save()
return redirect('/backoffice/')
context = {'form' : form}
return render(request, 'NewsForm.html', context)
NewsForm.html 是:
{% extends "base.html" %}
{% load static %}
{% block content %}
<form action="" method="POST">
{% csrf_token %}
{{ form }}
<input type="submit" name="Submit">
</form>
{% endblock %}
我一直想知道这种行为的原因可能是什么。尝试了多种方法,但都没有奏效。我可能在这里缺少什么?