2011-03-06 4 views
-1

J'ai deux modèle utilisateur et client J'ai client = models.ForeignKey (client, related_name = 'commandes') dans le modèle client, je veux à la fois utilisateur et formulaire client à enregistrer ensemble et si il y a une erreur dans une forme alors les deux ne devraient pas être sauvés. Lorsque j'ai créé une vue pour enregistrer à la fois il m'a donné une erreur que mainsiteapp_customer.user_id peut ne pas être NULL.id_utilisateur ne peut pas être NULL dans django

i ont essayé tous les moyens possibles mon code final est comme ci-dessous def formUtilisateur (demande):

if request.method == 'POST': 
    userform = UserForm(request.POST) 
    customerform = CustomerForm(request.POST)   
    if userform.is_valid(): 
    u = userform.save() 

     Customer.user = u 
     print Customer.user 
     if customerform.is_valid(): 
      c = customerform.save(commit=False)  

      try: 
       c.full_clean() 
       c.save() 
       print c 
       return HttpResponseRedirect('/webshop/') 
      except ValidationError, e: 
       pass 
     u.delete() 

else: 

    userform = UserForm() 
    customerform = CustomerForm() 
context = RequestContext(request, {'userform':userform, 'customerform':customerform,}) 
return render_to_response('userRegister.html', context) 

ses maintenant 9 jours, je ne pourrais pas trouver où m je fais mal.

si quelqu'un sait où m je fais mal grâce

+0

« Je client = models.ForeignKey (client, « ordres » related_name =) dans le modèle client » Essayez-vous se joindre à soi? ou vouliez-vous dire que c'est dans le modèle de l'utilisateur? Pouvez-vous publier vos modèles client et utilisateur. L'erreur que vous obtenez indique que vous avez un user_id fk dans votre modèle client qui n'est pas défini – DTing

Répondre

1
Customer.user = u 
if customerform.is_valid(): 
    c = customerform.save(commit=False) 

Vous réglante user la classe du modèle ici. Au lieu de cela, vous souhaitez définir la propriété utilisateur du client comme c.user = u.

0

Vous avez juste besoin de vérifier si les deux userform et customerform sont valides en utilisant une déclaration et

def userForm(request): 

    if request.method == 'POST': 
     userform = UserForm(request.POST) 
     customerform = CustomerForm(request.POST)   
     if userform.is_valid() and customerform.is_valid(): 
      c = customerform.save() 
      u = userform.save(commit=False) 
      u.customer=c 
      u.save() 
      return HttpResponseRedirect('/webshop/') 
    else: 
     userform = UserForm() 
     customerform = CustomerForm() 
    context = RequestContext(request, {'userform':userform, 'customerform':customerform,}) 
    return render_to_response('userRegister.html', context) 
Questions connexes