我是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