2011-05-11 53 views
7

我有這個「Jobs Server」模型,我正在構建。我想包括一個字段,可以節省這份工作在哪一天運行。最終在UI中,我希望用戶能夠選擇一系列複選框(每天一個)。在我的模式下代表這個「星期幾」數據的最佳方式是什麼?django在模型中的天數表示

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 = ? 

回答

2

如果你想爲每一個複選框,然後做最簡單的事情是爲每個人創造BooleanFields。如果你想將它存儲爲一個更復雜的值(例如,逗號分隔的列表或其他東西),創建你自己的小部件並使用javascript來玩,那麼你可以走這條路。

11

這樣的事情可以工作。

#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 } 

或保存多天

#models.py 
class Days(models.Model): 
    day = models.CharField(max_length=8) 

days = models.ManyToManyField(Days) 

#forms.py 
widgets = { 'days': forms.CheckboxSelectMultiple } 
+0

我刪除了我的意見。出於某種原因,頁面存在錯誤,並且您的小部件不斷消失。 – 2011-05-11 15:29:55

+0

我修改了一次,修正了一些問題。 – silent1mezzo 2011-05-11 15:32:38

+0

啊,無論如何,我給你+1。好答案。 – 2011-05-11 15:34:35

20

您可能想要創建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() 
(..) 
1

剛剛實施django-weekday-field。很棒! 希望這可以幫助其他人絆倒這個問題

+0

可能是一些鏈接到源代碼? – 2017-08-10 09:55:24