私はこれを数時間突っ込んでいて、この問題に悩まされているように感じます。このビューは2つの操作を実行する必要があります。最初の作業操作は、送信されたフォームデータを使用してオブジェクトを作成することです。2番目の操作は、一意のフィールド「bar_code」に基づいて「status」フィールドを更新することです。最初に保存してから更新すると、「この%sを持つ%sはすでに存在します。」という一意の属性が原因で発生するエラーが発生します。これは予想どおりです。これらの両方の操作を実行するためのビューを維持したいと思います。
def check_in_part_two(request):
errlst=[]
c={}
c.update(csrf(request))
if request.method == 'POST':
form = PartForm(request.POST)
if form.is_valid():
try:
# Test if the part row exists based on bar_code
instance = Part.objects.get(bar_code=request.POST['bar_code'])
except Part.DoesNotExist:
# Clean the sn and create new row
form.cleaned_data['serial_number']
form.save()
return http.HttpResponseRedirect('/current_count/')
else:
edit = PartForm(request.POST, instance=instance, fields=['status'])
if edit.is_valid():
edit.cleaned_data['bar_code']
edit.save()
return http.HttpResponseRedirect('/current_count/')
else:
form = PartForm(initial={'status':3L, 'serial_number':'placeholder'})
return render(request,'add_part.html',{
'title':'Add Item',
'form': form,
})