Django'Column'user_id'不能为空'

时间:2018-02-21 21:47:24

标签: python django

请帮我解决这个问题。我开始学习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

来自https://ideone.com/oWnIqH

1 个答案:

答案 0 :(得分:1)

您没有将用户设置为ImageFieldForm - ModelForm Profile作为Meta类中的模型。

image_field_form.save(commit=False)
image_field_form.user = user
image_field_form.save()