在django admin中,我们可以根据选择进行多项选择

Ras*_*iel 6 django django-admin

http://docs.djangoproject.com/en/dev/ref/models/fields/#choices

我已经阅读了文档,这意味着使用数据库表来获取动态数据,但是它说明了这一点

选择适用于静态数据,如果有的话,变化不大.

所以,如果我想使用选择,但让它选择多个,因为我使用的数据是非常静态的,例如一周中的几天.

无论如何要在没有数据库表的情况下实现这一点?

Joh*_*ett 5

ChoiceField并不适合多种选择,而是使用ManyToManyField.忽略现在可以使用Choices而不是ForeignKey来获取静态数据的事实.如果结果是一个性能问题,有一些方法可以用不同的方式表示(一种是二元掩码方法),但它们需要更多的工作.


小智 5

这对我有用:

1) 创建一个 Form 类并设置一个属性以向 MultipleChoiceField 提供静态选择

from django import forms
from myapp.models import MyModel, MYCHOICES

class MyForm(forms.ModelForm):
    myfield = forms.MultipleChoiceField(choices=MYCHOICES, widget=forms.SelectMultiple)
    class Meta:
        model = MyModel
Run Code Online (Sandbox Code Playgroud)

2)然后,如果您使用的是管理界面,请在管理类中设置表单属性,以便tit将使用您的自定义表单

from myapp.models import MyModel
from myapp.forms import MyForm
from django.contrib import admin

class MyAdmin(admin.ModelAdmin):
    form = MyForm

admin.site.register(MyModel, MyAdmin)
Run Code Online (Sandbox Code Playgroud)

  • 但是`myfield`是如何在`MyModel`中定义的,以及它如何映射到DB上呢? (15认同)