Chr*_*r H 8 django django-admin
我使用django admin来更新MySQL数据库上的各种数据.我使用基本的django管理员.在输入新数据时,我希望能够拥有它,以便人们只能从几个选项中选择输入新的文本数据.
例如:该表包含颜色,因此,不是让管理员(我们的情况下是个人数据输入)只是在文本框中输入任何内容,我怎样才能让django管理员只给他们几个选项供他们选择?
Yuj*_*ita 21
这可以通过模型字段参数完成 choices
myfield = models.CharField(max_length=256, choices=[('green', 'green'), ('red', 'red')]
Run Code Online (Sandbox Code Playgroud)
唯一的问题是,如果您在数据库中已经有一个与其中一个值不匹配的值,那么django可能会将其默认为其中一个选项.
如果这是一个问题并且您想要保留这些值,我可能会覆盖管理表单,并且只提供ChoiceField添加操作或动态添加数据库中的任何内容作为有效选项之一.
class MyForm(ModelForm):
MY_CHOICES = [('green', 'green'), ('red', 'red')]
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
if self.instance.id:
CHOICES_INCLUDING_DB_VALUE = [(self.instance.field,)*2] + self.MY_CHOICES
self.fields['my_field'] = forms.ChoiceField(
choices=CHOICES_INCLUDING_DB_VALUE)
class MyAdmin(admin.ModelAdmin):
form = MyForm
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12911 次 |
| 最近记录: |