Not NULL-Einschränkung ist fehlgeschlagen Fehler
Ich bekomme immer diese Fehlermeldung: "not NULL-Einschränkung ist fehlgeschlagen: users_userprofile.user_id", wenn ich versuche, ein Formular Absenden
from django.db import models
from django.contrib.auth.models import User
class UserProfile(models.Model):
#Esta linea es requerira. Linkea UserProfile a un User model
user = models.OneToOneField(User)
#atributos adicionales
about_me = models.TextField(max_length=100,default='',blank=True)
experience = models.TextField(max_length=250,default='',blank=True)
offers = models.TextField(max_length=110,default='',blank=True)
Dies ist die forms.py:
from django import-Formulare
von den Benutzern.Modelle importieren UserProfile
von django.contrib.auth.models import User
class UserForm(forms.ModelForm):
password = forms.CharField(min_length=6,label='', widget=forms.PasswordInput(attrs={'placeholder': 'Password','required':'true','class':"form-control"}))
username = forms.CharField(label='', min_length=6,
widget=forms.TextInput(attrs={'placeholder': 'Username','required':'true','class':"form-control",'autofocus':'true'}))
email = forms.CharField(label='',
widget=forms.TextInput(attrs={'placeholder': 'Email','required':'true','class':"form-control"}))
class Meta:
model = User
fields = ('username', 'email', 'password')
class UserProfileForm(forms.ModelForm):
about_me = forms.CharField(label='',
widget=forms.Textarea(attrs={'placeholder': 'Sobre mi','required':'true','class':"form-control"}))
first_name = forms.CharField(label='',
widget=forms.TextInput(attrs={'placeholder': 'Nombre','required':'true','class':"form-control"}))
last_name = forms.CharField(label='',
widget=forms.TextInput(attrs={'placeholder': 'Apellidos','required':'true','class':"form-control"}))
experience = forms.CharField(label='',
widget=forms.TextInput(attrs={'placeholder': 'Experiencia','required':'true','class':"form-control"}))
offers = forms.CharField(label='',
widget=forms.Textarea(attrs={'placeholder': 'Mensaje','required':'true','class':"form-control"}))
class Meta:
model = UserProfile
fields =('first_name','last_name','about_me','experience','offers')
Dies ist die Vorlage:
{%extends 'base.html'%}
{%block content%}
{% if user.is_authenticated %}
<h1>Edita tu perfil</h1>
<form id='profile' method='post' action='/edit_profile/'>
{% csrf_token %}
{{profile.as_p}}
<button type='submit'>Editar</button>
</form>
{%endif%}
{%endblock%}
Dank vor der hand
EDIT:
War der Fehler in der views.py ich brauchte, um eine Instanz der form, wie diese:
form = UserProfileForm(data=request.POST, instance=profile)
Dies ist meine komplette views.py:
def edit_profile(request):
try:
profile = request.user.userprofile
except UserProfile.DoesNotExist:
profile = UserProfile(user=request.user)
if request.method == 'POST':
form = UserProfileForm(data=request.POST, instance=profile)
if form.is_valid():
form.save()
return HttpResponse("Exito!")
else:
form = UserProfileForm(instance=profile)
else:
form = UserProfileForm()
return render(request,
'editprof.html',
{ 'form': form})
Können Sie näher erläutern, deine Frage etwas deutlicher?
Es scheint, dass die, die du Einreichen musst
Es scheint, dass die, die du Einreichen musst
user
Feld, wenn Sie mit Formen. Aber ohne zu sehen, Ihren code für das Formular, ich kann nicht sicher sagen, was dein problem ist.InformationsquelleAutor AndyJRR | 2014-11-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Problem ist, dass Benutzer im Benutzerprofil, ist erforderlich, aber Sie sind nicht die Einstellung das Feld Benutzer in UserProfileForm. Datenbank nicht bekommen, user_id, so versuchte er set null auf diesem Gebiet, sondern Gebiet haben nicht not null-Einschränkung. Sie können festlegen, null=True auf Feld-definition in UserProfile Modell, überschreiben oder speichern (oder wahrscheinlich is_valid) form-Methode, um Benutzer automatisch hinzu, oder fügen Sie das Feld Benutzer zu UserProfileForm, oder was auch immer, was Sie wollen.
InformationsquelleAutor Rodbert