したがって、私はmodelformsetファクトリで使用するmodelformを持っています。変更がデータベースに保存されている、私はfields
に別のフィールド、extension
を追加した場合、Django Model Formsetでフィールドを追加すると、別のフィールドにIntegrityErrorが発生する
class CheckinForm(ModelForm):
class Meta:
model = Checkout
fields = ('return_date',)
def __init__(self, *args, **kwargs):
super(CheckinForm, self).__init__(*args, **kwargs)
self.fields['return_date'].widget = CheckboxInput()
私は(1048, "Column 'book_id' cannot be null")
を得るが、私はこのようなフォームクラスを残す場合は
は、私はエラーを受け取りません。ここで
は私のモデルである:
class Checkout(models.Model):
book = models.ForeignKey(Book)
user = models.ForeignKey(User)
checkout_date = models.DateField(auto_now_add = True)
return_date = models.DateField(null = True, blank=True)
extension = models.IntegerField("Extension in days", blank = True, default = 0)
、ここでは、フォームを処理図である。
def checkin(request):
c = RequestContext(request, dictionary)
CheckinFormSet = modelformset_factory(Checkout, CheckinForm)
if request.method == "POST":
data = request.POST.copy()
for i in range(0, int(data['form-TOTAL_FORMS'])):
if 'form-' + str(i) + '-return_date' in data:
data['form-' + str(i) + '-return_date'] = datetime.date.today().isoformat()
else:
data['form-' + str(i) + '-return_date'] = ''
formset = CheckinFormSet(data = data)
user_form = AutoUserForm(data = data)
if formset.is_valid():
c['cool'] = 'cool'
formset.save()
else:
c['err'] = formset.errors
c['data'] = data
else:
CheckinFormSet = modelformset_factory(Checkout, CheckinForm)
user_form = AutoUserForm()
c['user_form'] = user_form
c['form'] = CheckinFormSet
c['context'] = 'checkin'
return render_to_response('lib_admin/checkin.html', {}, c)
return_date
フィールドのために、私はちょうど持っているので、私は、フォームデータを通過する必要がありますチェックボックスをオンにすると、現在の日付が挿入されます。
これは本当に変わっているようです。特に、IntegrityErrorを受け取ってもデータが保存されるためです。
。それでも、IntegrityErrorが別のフィールドにスローされるのは非常に奇妙です。どうもありがとう。 – Cronco