views:

73

answers:

1

This is my form on 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)

This is my 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})

When i submit the form i get

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

I just want to insert information on a table using django

+1  A: 

The data you've posted doesn't indicate the source of the problem. Did you clear your database and run syncdb when you last changed your models?

The error you're seeing relates to trying to introduce a duplicate value into a column which must be unique, constrained at the database level. You have an object that's trying to be saved with a duplicate pk value.

That said, your keyvalueNEW scheme is not at all the right way of going about doing that. You probably want to be using ModelForms instead.

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

Paul McMillan