2010-12-13 22 views
0

dies meine forms.py Datei istIntegrityError user_id nicht NULL sein kann

def save(self,ip_address, *args, **kwargs): 
     g = GeoIP() 
     lat,lon = g.lat_lon(ip_address) 
     user_location = super(registerForm, self).save() 
     user_location.latitude = lat 
     user_location.longitude = lon 
     user_location.save(*args, **kwargs) 

und in meinen Ansichten ich habe

def status_set(request): 
    if request.method == "POST": 
     rform = registerForm(data = request.POST) 
     if rform.is_valid(): 
      register = rform.save(ip_address='203.99.178.139') 
      register.user=request.user 
      register.save(ip_address) 
      return render_to_response('home.html') 
    else: 
     rform = registerForm() 
    return render_to_response('status_set.html',{'rform':rform}) 

aber wenn ich versuche, die Formulare eintragen sagt „IntegrityError: accounts_register .user_id ist möglicherweise nicht NULL "aber ich habe register.user=request.user in meinen Ansichten. Muss ich die "Id" oder "PK" als ein Argument an Formulare übergeben oder ich mache einen Fehler

+0

Siehe http://stackoverflow.com/questions/3803789/integrityerror-while-saving-a-new-item-to-the-postgresql-db-in-django/7635773 – glarrain

Antwort

1

Sie haben wahrscheinlich mit einem AnonymousUser Objekt und die ID wird immer auf keine gesetzt. Wenn Sie ./manage.py runserver ausführen, versuchen pdb mit durch, wie dies vor der Anweisung in einer Zeile setzen, die versagt:

import pdb; pdb.set_trace() 

Das wird treten in Ihnen ein REPL, wo Sie durch Schritt und Ihren Code erkunden.

+0

Ich habe überprüft mit Import-Pdb und der Code versagt nach dieser Zeile register = rform.save (ip_address = '203.99.178.139') Muss ich es als Argument übergeben, um Formulare zu speichern Methode – MajorGeek

+0

Ich kann nur mit vielleicht beantworten, weil alles auf den Code in Ihrem registerForm abhängt .sparen(). Sie können in Ihre save() - Subroutine eintreten, zur [n] ext-Anweisung gehen oder einmal an der pdb-Eingabeaufforderung. Hier ist ein bisschen ein pdb-Helfer, wenn Sie eine harte Zeit haben, die pdb-Dokumente zu grokking: http://pythonconquerstheuniverse.wordpress.com/category/the-python-debugger/ – istruble

Verwandte Themen