如何使用混合类型选项创建嵌套字段?

时间:2012-05-11 16:14:42

标签: django form-fields

我正在建立一个网站来管理某种时间表。

我查看了日历之类的内容,发现谷歌日历中的这个表单非常符合我的要求。 Google Calendar Reminder Interface

问题是我很难弄清楚如何解决Finaliza字段。 我有一个Reminder模型,但是......我应该为每个选项创建一个列并使用表单小部件吗? 我可以使用一些固定的解决方案吗?

1 个答案:

答案 0 :(得分: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"""

希望它有所帮助。