2011-11-10 2 views
0

Ceci est mon point de vue pour l'enregistrement de l'utilisateur:Erreur lors de l'utilisation du formulaire Django UserProfile.

def user_reg(request): 
    UserReg = modelformset_factory(UserProfile) 

    if request.method == 'POST': 
     formset = UserReg(request.POST) 
     if formset.is_valid(): 
      formset.save() 
      return HttpResponseRedirect('/thanks/') 
    else: 
     formset = UserReg() 
    return render_to_response("regform.html",{"formset":formset,}) 

Ceci est mon models.py

from django.db import models 
from django.contrib.auth.models import User 


class UserProfile(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    name = models.CharField(max_length = 100) 
    reg_no = models.TextField(unique=True) 
    password = models.CharField(max_length=128) 

L'erreur que je reçois est:

Exception Type: DatabaseError at /register/ 
Exception Value: column auth_userprofile.name does not exist 
LINE 1: ..._userprofile"."id", "auth_userprofile"."user_id", "auth_user... 

J'ai deux questions ici: 1. Évidemment, je veux savoir pourquoi je reçois l'erreur et comment déboguer. 2. Est-ce la bonne façon de procéder ou devrait-on le définir dans forms.py et ensuite l'importer? Le modèle formset que je voulais dire. La documentation de django a montré que de cette façon, cela peut être fait.

Répondre

0

L'erreur est une erreur de base de données, vous devez ajouter la colonne "nom" à la table "auth_userprofile". Je recommande fortement de regarder dans "Sud" pour tous vos besoins de migration de schéma de base de données.

+0

Ainsi, Syncdb ne devrait-il pas fonctionner? – Hick

+0

Oui et Non. Syncdb ne différencie pas les tables, il ne peut les créer qu'à partir de rien, donc si vous êtes prêt à perdre toutes les données (ou exporter, synchroniser, importer) c'est bien, mais une fois que vous êtes en direct vous Je veux quelque chose d'un peu plus robuste. – Aquarion

Questions connexes