nna*_*ski 11 django model django-models days
我有这个"乔布斯服务器"模型,我正在建设.我想要包含一个字段,该字段将保存此作业将在一周中的哪几天运行.最终在用户界面中,我希望用户能够拥有一系列可以选择的复选框(每天一个).在我的模式中表示这个"星期几"数据的最佳方法是什么?
class Job(models.Model):
name = models.CharField(max_length=32, unique=True)
package = models.ForeignKey(Package)
binary = models.ForeignKey(Binary)
host = models.ForeignKey(Host)
colo = models.ForeignKey(Location)
group = models.ForeignKey(Group)
type = models.ForeignKey(Type)
start = models.TimeField()
end = models.TimeField()
days = ?
Run Code Online (Sandbox Code Playgroud)
MUY*_*ium 24
您可能想要创建DayOfTheWeek字段类型,您可以通过各种方式进行改进.
此代码会导致使用多语言工具自动转换为本地语言.
#myFields.py
from django.utils.translation import ugettext as _
from django.db.models import SmallIntegerField
DAY_OF_THE_WEEK = {
'1' : _(u'Monday'),
'2' : _(u'Tuesday'),
'3' : _(u'Wednesday'),
'4' : _(u'Thursday'),
'5' : _(u'Friday'),
'6' : _(u'Saturday'),
'7' : _(u'Sunday'),
}
class DayOfTheWeekField(models.CharField):
def __init__(self, *args, **kwargs):
kwargs['choices']=tuple(sorted(DAY_OF_THE_WEEK.items()))
kwargs['max_length']=1
super(DayOfTheWeekField,self).__init__(*args, **kwargs)
#models.py
import myFields
(..)
dayOfTheWeek = myFields.DayOfTheWeekField()
(..)
Run Code Online (Sandbox Code Playgroud)
sil*_*zzo 16
像这样的东西会起作用.
#models.py
DAYS_OF_WEEK = (
(0, 'Monday'),
(1, 'Tuesday'),
(2, 'Wednesday'),
(3, 'Thursday'),
(4, 'Friday'),
(5, 'Saturday'),
(6, 'Sunday'),
)
days = models.CharField(max_length=1, choices=DAYS_OF_WEEK
#forms.py
widgets = { 'days': forms.CheckboxSelectMultiple }
Run Code Online (Sandbox Code Playgroud)
或者保存多天
#models.py
class Days(models.Model):
day = models.CharField(max_length=8)
days = models.ManyToManyField(Days)
#forms.py
widgets = { 'days': forms.CheckboxSelectMultiple }
Run Code Online (Sandbox Code Playgroud)
如果您希望每个字段都有一个复选框,那么最简单的方法就是为每个字段创建 BooleanFields。如果您想将其存储为更复杂的值(例如,逗号分隔的列表或其他内容),创建您自己的小部件并使用 javascript,那么您可以走这条路。
| 归档时间: |
|
| 查看次数: |
11777 次 |
| 最近记录: |