2010-02-21 89 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

相关问题