简体   繁体   English

Django'列'user_id'不能为空'

[英]Django 'Column 'user_id' cannot be null'

Please help me resolve this issue. 请帮助我解决此问题。 I'm starting to learn Django. 我开始学习Django。 Please tell me where the error. 请告诉我错误在哪里。 I was looking for similar problems, but I did not find a solution. 我一直在寻找类似的问题,但没有找到解决方案。 Thanks 谢谢

views 意见

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)

forms 形式

class ImagefieldForm(forms.ModelForm):
avatar = forms.ImageField(required=True)

class Meta:
    model = Profile
    fields = ('avatar', )

models 楷模

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    avatar = models.ImageField(upload_to='images/users', blank=False)

This is the stack trace from the problem. 这是问题的堆栈跟踪。 You can see where the problem occurs. 您可以查看出现问题的位置。

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

From https://ideone.com/oWnIqH . 来自https://ideone.com/oWnIqH

You're not setting a user to the ImageFieldForm - which is a ModelForm that has Profile as model in its Meta class. 您没有将用户设置为ModelForm这是一个ModelForm ,在其Meta类中具有Profile作为模型。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM