Каков наилучший способ хранить несколько строк даты в Django? - PullRequest
2 голосов
/ 21 февраля 2010

Я создаю приложение 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',)

Но так ли это лучше? Есть ли более эффективная альтернатива, такая как строка, разделенная запятыми?

1 Ответ

3 голосов
/ 22 февраля 2010

Лучший способ - это тот, который лучше всего подходит для ваших целей.В Django нет встроенного поля, разделенного запятыми, но вы можете легко свернуть свое собственное - проблема в том, действительно ли это то, что вам действительно нужно.

Например - если вам нужно отфильтровать события по их датам, я не уверен, как вы могли бы легко сделать это с таким разделенным запятыми полем, но я ясно вижу, как вы могли бы сделать это с вашим текущимподход:

 Event.objects.filter(eventdate_set__date=my_date)

- поэтому, если вы не укажете свой запланированный шаблон использования, я не думаю, что есть общий ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...