0
カスタムインラインフォームセットに問題があります。 delete checked
の行をスキップする検証が必要です。検証でDELETE行をスキップ
class TravelsRelationsForm(ModelForm):
def __init__(self, *args, **kwargs):
super(TravelsRelationsForm, self).__init__(*args, **kwargs)
if kwargs.has_key('instance'):
instance = kwargs['instance']
else:
try:
self.initial['title']
except:
self.initial[DELETION_FIELD_NAME] = True
# Force update of child
def has_changed(self, *args, **kwargs):
return True
def clean(self):
cleaned_data = self.cleaned_data
count = 0
for form in self.forms:
try:
if not form.cleaned_data['DELETE']:
count += 1
except AttributeError:
pass
if count < 1:
raise forms.ValidationError('You must have at least one title')
return cleaned_data
同時に、少なくとも1つの行を強制的に実行する必要はありません。 TravelsRelationsForm' object has no attribute 'forms'
のため、これは機能しません。
ありがとうございます!
何らかの理由でこれがうまくいきません...まだ空の行がすべて欠落としてマークされています(チェックが削除されています) – Mission
実際、問題はDjangoが必須ではなくてもすべてのフィールドを返すことでした。空にすることができますが、それらはtravelformset.errorsに存在します... – Mission