所有:
Model
与CheckboxSelectMultiple
小部件一起使用的静态数据正确的字段类型是什么?我收到验证错误,觉得我缺少一些简单的东西。
该应用程序是一个简单的Django 1.6应用程序,其中一个Campground
对象可以具有多个对象eligible_days
(例如,站点#123可能在星期一和星期二可用,而站点#456可以在星期三至星期五使用)。
因为它是静态数据,并且我已经准备好ManyToManyField
有不必要的数据库开销,所以我尝试使用choices
模型内部的定义来执行此操作,但是当我尝试保存时,会收到验证错误。请选择一个有效的选择。[u'5',u'6']不是可用的选择之一。每次。
Q1:是否必须重写/子类化字段以支持此操作?
Q2:是否需要自定义验证方法来支持此方法?
问题3:我是否会通过避免不必要的努力使自己变得困难ManyToManyField
?
谢谢您的帮助!/米
class CampgroundQuery(models.Model): SUN = 0 MON = 1 TUE = 2 WED = 3 THU = 4 FRI = 5 SAT = 6 DAYS_OF_WEEK_CHOICES = ( (SUN, 'Sunday'), (MON, 'Monday'), (TUE, 'Tuesday'), (WED, 'Wednesday'), (THU, 'Thursday'), (FRI, 'Friday'), (SAT, 'Saturday'), ) # loads choices from defined list eligible_days = models.CharField(max_length=14,choices=DAYS_OF_WEEK_CHOICES, blank=False, default='Saturday') campground_id = models.SmallIntegerField() stay_length = models.SmallIntegerField() start_date = models.DateField() end_date = models.DateField()
from django.contrib import admin from searcher.models import CampgroundQuery from forms import CampgroundQueryAdminForm class CampgroundQueryAdmin(admin.ModelAdmin): form = CampgroundQueryAdminForm admin.site.register(CampgroundQuery, CampgroundQueryAdmin)
from django import forms from django.contrib import admin from searcher.models import CampgroundQuery class CampgroundQueryAdminForm(forms.ModelForm): class Meta: model = CampgroundQuery widgets = { 'eligible_days': forms.widgets.CheckboxSelectMultiple }
TAH.. 5
我知道这是一个古老的问题,但是对于那些希望避免使用ManyToManyField的人来说,有一个可以做到这一点的程序包django-multiselectfield,可以快速,轻松地实现。
表格
from multiselectfield import MultiSelectFormField class MyForm(forms.ModelForm): my_field = MultiSelectFormField(choices=MyModel.MY_CHOICES)
models.py
from multiselectfield import MultiSelectField class MyModel(models.Model): MY_CHOICES = ( ('a', "A good choice"), ... ('f', "A bad choice"), ) my_field = MultiSelectField(choices=MY_CHOICES, max_length=11)
就是这样!它将MY_CHOICES的密钥存储在以逗号分隔的字符串中。简单!
我知道这是一个古老的问题,但是对于那些希望避免使用ManyToManyField的人来说,有一个可以做到这一点的程序包django-multiselectfield,可以快速,轻松地实现。
表格
from multiselectfield import MultiSelectFormField class MyForm(forms.ModelForm): my_field = MultiSelectFormField(choices=MyModel.MY_CHOICES)
models.py
from multiselectfield import MultiSelectField class MyModel(models.Model): MY_CHOICES = ( ('a', "A good choice"), ... ('f', "A bad choice"), ) my_field = MultiSelectField(choices=MY_CHOICES, max_length=11)
就是这样!它将MY_CHOICES的密钥存储在以逗号分隔的字符串中。简单!