如何创建选择框?

0 投票
1 回答
617 浏览
提问于 2025-04-18 00:41

请帮我创建一个选择框的管理面板。我使用的是:

from django.db import models
from django.forms.models import ChoiceField
from django import forms

CHOICES = ('volvo', 'saab', 'opel', 'audi', 'cyan',)


class Sponsors(models.Model):
    title = models.CharField(max_length=30)
    link = models.URLField(max_length=100)
    background_color = forms.ChoiceField(widget=forms.Select, choices=CHOICES)

admin.py:

from django.contrib import admin
from sponsors.models import Sponsors


class sponsorsAdmin(admin.ModelAdmin):
    fields = ['title', 'link', 'background_color']  
    list_display = ('title',)
    search_fields = ['title']

    class Meta:
        verbose_name = 'Спонсор'
        verbose_name_plural = 'Спонсоры'        


admin.site.register(Sponsors, sponsorsAdmin)

结果是,管理面板上只显示了“id”、“title”和“link”这几个字段,但“background_color”这个字段没有显示出来。而且在数据库中也找不到这个字段。

我希望在管理面板中“background_color”这个字段看起来像这个

1 个回答

0

与其在你的模型里添加一个 background_color 字段,不如创建一个新的表单类(ModelForm的子类)来包含这个字段。

class Sponsors(models.Model):
    title = models.CharField(max_length=30)
    link = models.URLField(max_length=100)


CHOICES = ('volvo', 'saab', 'opel', 'audi', 'cyan',)


class SponsorsForm(models.ModelForm):

    class Meta:
        model = Sponsors

    background_color = forms.ChoiceField(choices=CHOICES)


class sponsorsAdmin(admin.ModelAdmin):
    ...
    form = SponsorsForm

撰写回答