2010-02-21 54 views
2

我正在構建一個需要存儲事件的多個選定日期的Django應用程序。浮現在腦海的第一件事是建立事件模型:在Django中存儲多個日期字符串的最佳方式是什麼?

class Event(models.Model): 
    title  = models.CharField(max_length=200) 
    creator = models.ForeignKey(User) 

    modified = models.DateTimeField(auto_now=True, auto_now_add=False) 
    created = models.DateTimeField(auto_now=False, auto_now_add=True) 

    def __unicode__(self): 
     return self.title 

    class Meta: 
     ordering = ('title',) 

然後建立EventDates的一個單獨的表:

class EventDate(models.Model): 
    event  = models.ForeignKey(Event) 

    date  = models.DateField() 

    modified = models.DateTimeField(auto_now=True, auto_now_add=False) 
    created  = models.DateTimeField(auto_now=False, auto_now_add=True) 

    def __unicode__(self): 
     return "%s/%s" % (self.event, self.date) 

    class Meta: 
     ordering = ('created',) 

但是,這是最好的辦法嗎?有一個更好的執行選擇,如逗號分隔的字符串?

回答

3

最好的方法是最好的服務你的目的。在Django中沒有內置逗號分隔的字段,但是您可以輕鬆地推出自己的一個 - 問題是如果這是您真正需要的。例如,如果您需要根據日期過濾事件,我不確定您如何輕鬆地使用逗號分隔字段來完成此操作,但我可以清楚地看到如何使用您當前的方法來完成此操作:

Event.objects.filter(eventdate_set__date=my_date) 

- 所以除非你指定你的計劃使用模式,我不認爲有一個普遍的答案。

+0

我認爲你是對的。過濾將是一個很長的字符串可怕的神。謝謝。 – Sebastian 2010-02-21 21:22:09

相關問題