请帮我解决这个问题。我开始学习Django了。请告诉我哪里有错误。我一直在寻找类似的问题,但我没有找到解决方案。感谢
视图
def register(request):
args = {}
args['forms'] = SignUpForm()
args['form1'] = ImagefieldForm()
if request.POST:
newuser_form = SignUpForm(request.POST)
image_field_form = ImagefieldForm(request.POST, request.FILES)
if newuser_form.is_valid() and image_field_form.is_valid():
user = newuser_form.save(commit=False)
user.is_active = False
user.save()
print ('User saved')
image_field_form.save()
current_site = get_current_site(request)
mail_subject = 'Welcome to site'
message = render_to_string('login_app/please_active_email.html', {
'user': user,
'domain': current_site.domain,
'uid': urlsafe_base64_encode(force_bytes(user.pk)).decode(),
'token': account_activation_token.make_token(user),
})
to_email = newuser_form.cleaned_data.get('username')
email = EmailMessage(
mail_subject, message, to=[to_email])
email.send()
return HttpResponse('Please check your email')
else:
args['forms'] = newuser_form
return render(request, 'login_app/registration.html', args)
形式
class ImagefieldForm(forms.ModelForm):
avatar = forms.ImageField(required=True)
class Meta:
model = Profile
fields = ('avatar', )
模型
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
avatar = models.ImageField(upload_to='images/users', blank=False)
这是问题的堆栈跟踪。您可以看到问题发生的位置。
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mysql/connector/django/base.py", line 176, in _execute_wrapper
return method(query, args)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mysql/connector/cursor.py", line 561, in execute
self._handle_result(self._connection.cmd_query(stmt))
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mysql/connector/connection.py", line 525, in cmd_query
result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mysql/connector/connection.py", line 427, in _handle_result
raise errors.get_exception(packet)
mysql.connector.errors.IntegrityError: 1048 (23000): Column 'user_id' cannot be null
答案 0 :(得分:1)
您没有将用户设置为ImageFieldForm - ModelForm
Profile
作为Meta
类中的模型。
image_field_form.save(commit=False)
image_field_form.user = user
image_field_form.save()