我是django的新手,我的任务是让用户在登录后能够创建很多配置文件在Django auth.models用户一对多(1048,“列'user_id'不能为空')
这是我的models.py:
class Profile(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
name = models.CharField(blank=False, max_length=100)
lastname = models.CharField(blank=False, max_length=100)
city = models.CharField(blank=True, max_length=100)
country = models.CharField(blank=True, max_length=100)
phonenumber = models.CharField(blank=False, null=True, max_length=20)
email = models.EmailField(blank=False, max_length=100)
date_of_birth = models.DateField(blank=True, null=True)
date_of_addition = models.DateField(auto_now=True, editable=False, null=True)
当我创建我的用户,请登录并按创建配置文件按钮,我得到: django.db.utils.IntegrityError:(1048,“列'user_id'不能为空“)
Th是是我的views.py:
@login_required
def profile_create(request):
data = dict()
if request.method == 'POST':
form = ProfileForm(request.POST)
if form.is_valid():
form.save()
data['form_is_valid'] = True
profiles = Profile.objects.all()
data['html_profile_list'] = render_to_string('basic_app/users_list_1_10.html', {'profiles': profiles})
else:
data['form_is_valid'] = False
else:
form = ProfileForm()
context = {'form': form}
data['html_form'] = render_to_string('basic_app/partial_profile_create.html', context, request=request)
return JsonResponse(data)
def register(request):
registered = False
if request.method == "POST":
user_form = UserForm(data=request.POST)
if user_form.is_valid():
user = user_form.save()
user.set_password(user.password)
user.save()
registered = True
else:
print(user_form.errors)
else:
user_form = UserForm()
return render(request,'basic_app/registration.html',{'user_form':user_form,'registered':registered})
这是我forms.py:
from django import forms
from django.forms import ModelForm
from django.contrib.auth.models import User
from .models import Profile
class ProfileForm(ModelForm):
class Meta:
model = Profile
fields = ('name', 'lastname', 'city', 'country', 'phonenumber', 'email', 'date_of_birth')
class UserForm(ModelForm):
password = forms.CharField(widget=forms.PasswordInput())
username = forms.CharField(help_text=False)
class Meta():
model = User
fields = ('username','password')
感谢
卡米尔,感谢您的关注。如果我创建'user = models.ForeignKey(User,blank = True,null = True'),那么我将获得所有db_users,其配置文件显示在我的数据表中。但是,我只想显示实际登录用户的配置文件。如果我在ProfileForm中提供用户,所以我想这将是一个在创建Profile时有一些东西可以通过的字段,但我希望它是只有登录的用户才能创建任何数量的可以连接的配置文件给他一对多的关系,可能是我应该在ProfileForm中保存配置文件给这个用户,有可能吗? – Stanislav