如果您真的想要选择菜单中的图像,这有点棘手,因为<option> 里面不能有<img>,我建议查看这个问题以确定您想要哪种类型的解决方案拿那个:How to add images in select list?
由于听起来好像您不一定想要下拉菜单并且只有几张图片,您或许可以改用广播组。
使用 Django 可以做到这一点的一种方法是继承 RadioSelect 小部件并覆盖 option_template_name 类变量,如下所示:
from django import forms
class SimbolRadioSelect(forms.RadioSelect):
option_template_name = 'myapp/forms/widgets/simbol_radio_option.html'
然后您需要创建option_template_name 类变量中指定的模板:
{% load static %}
<label{% if widget.attrs.id %} for="{{ widget.attrs.id }}"{% endif %}>
<input type="{{ widget.type }}"
name="{{ widget.name }}"
value="{{ widget.value|stringformat:'s' }}"
{% include "django/forms/widgets/attrs.html" %}>
{% if widget.value %}
<img src="{% get_media_prefix %}{{ widget.value|stringformat:'s' }}">
{% else %}
{{ widget.label }}
{% endif %}
</label>
我主要是通过查看 django 源代码中的radio_option.html 和其他模板来设计这个模板的:https://github.com/django/django/tree/main/django/forms/templates/django/forms/widgets
然后你会想在你的表单中使用它(或者如果你还没有的话,创建一个):
from django import forms
class SimbolAdminForm(forms.ModelForm):
class Meta:
fields = '__all__'
widgets = {
'simbol_oznaka': SimbolRadioSelect,
}
然后你可以在你的管理类中使用表单:
from django.contrib import admin
class SimbolAdmin(admin.ModelAdmin):
form = SimbolAdminForm
admin.site.register(Simbol, SimbolAdmin)
然后您将在管理员中结束: