我正在建立一个网站来管理某种时间表。
我查看了日历之类的内容,发现谷歌日历中的这个表单非常符合我的要求。
问题是我很难弄清楚如何解决Finaliza
字段。
我有一个Reminder
模型,但是......我应该为每个选项创建一个列并使用表单小部件吗?
我可以使用一些固定的解决方案吗?
答案 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"""
希望它有所帮助。