まず、あなたがこれを行う方法についてはCleaning and validating fields that depend on each otherを参照して、フォームレベルでこれを行う必要があり、それは次のようになります。また
def clean(self):
cleaned_data = super(YourForm, self).clean()
if cleaned_data['start_time'] > cleaned_data['end_time']:
raise forms.ValidationError(_(u'Start time must be before end time'))
、保存中に低レベルでそれを強制することができますメソッドまたはpre_savesignal中:
from django.db.models import signals
class StartTimeAfterEndTimeException(Exception):
def __init__(self, model):
super(StartTimeAfterEndTimeException, self).__init__(
'Start time %s should not be after end time %s' % (
model.start_time, model.end_time))
def session_force_end_time(sender, instance, **kwargs):
if instance.start_time >= instance.end_time:
raise StartTimeAfterEndTimeException(instance)
signals.pre_save.connect(session_force_end_time, sender=Session)
しかし、それはユーザーフレンドリーではありませんので、それはかなり低レベルです。
フォームレベルでは、アプリケーションの各フォームに対してこの動作を定義する必要がありますか? –
この動作は、一度だけ定義する必要があります。 SessionFormでこの振る舞いを定義し、SessionFormから継承するSessionのための他のフォームクラスを持つことができます。 – jpic
さて、私はフォームを継承しようとしています。ありがとうございました –