2009-11-20 7 views
0

Ceci est ma forme sur models.pycomment insérer une infomation sur une table dans Django

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) 

Ceci est mon 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}) 

Quand je soumets la forme que je reçois

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

Je veux juste insérer des informations sur une table à l'aide django

Répondre

1

Les données que vous avez publiées n'indiquent pas la source du problème. Avez-vous effacé votre base de données et exécuté syncdb lors de la dernière modification de vos modèles? L'erreur que vous voyez est liée à essayer d'introduire une valeur en double dans une colonne qui doit être unique, contrainte au niveau de la base de données. Vous avez un objet qui tente d'être enregistré avec une valeur pk en double. Cela dit, votre schéma keyvalueNEW n'est pas du tout la bonne façon d'y parvenir. Vous voulez probablement utiliser ModelForms à la place.

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

Questions connexes