0

これはmodels.pyの私のフォームです

class ItemForm(forms.Form):
     itemname = forms.CharField(max_length=100)
    itemwording = forms.CharField(max_length=100)
    notes = forms.CharField()
    abundance = forms.IntegerField(max_value=10)
    collunit = forms.CharField(max_length=50)
    litref = forms.CharField(max_length=100)
    litkey = forms.IntegerField(max_value=10)
    litrefdetail = forms.CharField()
    collcode =  forms.CharField(max_length=15)
    specimenno = forms.CharField(max_length=20)
    speciesid = forms.IntegerField(max_value=10)
    sorder = forms.CharField(max_length=50)
    disabled = forms.BooleanField(required = True)

これは私のview.pyです

 def additem(request):
    from django.db import connection, transaction
    cursor = connection.cursor()
    if request.method == 'POST':
        form = ItemForm(request.POST)
        if form.is_valid():
            itemnameNEW = form.cleaned_data['itemname']
            itemwordingNEW = form.cleaned_data['itemwording']
            notesNEW = form.cleaned_data['notes']
            abundanceNEW = form.cleaned_data['abundance']
            collunitNEW = form.cleaned_data['collunit']
            litrefNEW = form.cleaned_data['litref']
            litkeyNEW = form.cleaned_data['litkey']
            litrefdetailNEW = form.cleaned_data['litrefdetail']
            collcodeNEW =  form.cleaned_data['collcode']
            specimennoNEW = form.cleaned_data['specimenno']
            speciesidNEW = form.cleaned_data['speciesid']
            sorderNEW = form.cleaned_data['sorder']
            disabledNEW = form.cleaned_data['disabled']

            newitem = Item(itemname=itemnameNEW, itemwording=itemwordingNEW, notes=notesNEW, abundance=abundanceNEW, collunit=collunitNEW, litref=litrefNEW, litkey=litkeyNEW, litrefdetail=litrefdetailNEW, collcode=collcodeNEW,specimenno=specimennoNEW, speciesid=speciesidNEW,sorder=sorderNEW,disabled=disabledNEW )
            newitem.save();
            return HttpResponseRedirect('/jalo/')
        else:
            return HttpResponseRedirect('/nojalo/')

    else:
        form = ItemForm()

    return render_to_response('tbl/additem.html', {'form': form})

フォームを送信すると、

     IntegrityError at /login/manageitem/additem/
      duplicate key value violates unique constraint "tbl_item_pkey"

djangoを使用してテーブルに情報を挿入したいだけです

4

1 に答える 1

1

あなたが投稿したデータは、問題の原因を示していません。syncdbモデルを最後に変更したときに、データベースをクリアして実行しましたか?

表示されているエラーは、一意である必要があり、データベース レベルで制約されている列に重複した値を導入しようとしたことに関連しています。重複した pk 値で保存しようとしているオブジェクトがあります。

そうは言っても、あなたの keyvalueNEW スキームは、それを行うための正しい方法ではありません。代わりに ModelForms を使用することをお勧めします。

http://docs.djangoproject.com/en/dev/topics/forms/modelforms/

于 2009-11-20T00:54:57.273 に答える