2012-05-11 2 views
0

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

Я искал календари и тому подобное и нашел эту форму из календаря Google, чтобы быть тем, чего я хочу. Google Calendar Reminder Interface

Дело в том, что мне сложно определить, как решить поле Finaliza. У меня есть модель Reminder, но ... Должен ли я делать столбцы для каждой опции и играть с виджем формы? Есть ли консервированное решение, которое я могу использовать?

ответ

1

Почему вы не просто добавить столбцы в модели:

finalize_type = models.CharField(choices=(('Never', ''), ('Repetitions', ''), ('Date', ''))) 
finalize_repetitions = models.IntegerField() 
finalize_date = models.DateField() 

# model clean! 
def clean(self): 
    if finalize_type == 'Repetitions': 
      # check that there is number in finalize_repetitions 
      # raise validation error if not 
    elif finalize_type == 'Date': 
      # check date on finalize_date 

    # You should also check if date and repetions aren't set when type == 'Never' 

Если я правильно помню модели, чистые огни на сохранения. Поэтому, если вы реализуете ModelForm, он должен отображаться на ошибках форм.

Я также хотел бы реализовать метод

@property 
def next_event() 
    """returns date of next repetition, None if finished""" 

Надеется, что это помогает.

Смежные вопросы