NOT NULL约束失败:users_userprofile.user_id

时间:2019-04-15 10:19:46

标签: python django django-models

我正在尝试在我的应用程序的django form模型内插入UserProfile数据。我尝试使用django shellviews.py,但始终收到此错误。

Models.py

from django.db import models
from django.contrib.auth.models import User
# Create your models here.


class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    section = models.CharField(max_length=255, blank=True)
    year = models.IntegerField(null=True, blank=True)
    course = models.CharField(max_length=255, blank=True)
    qrcode = models.CharField(max_length=255, blank=True)
    present = models.BooleanField(default=False)

    def __str__(self):
        return self.user.username

views.py

@staticmethod
def generate_qr(request):
    if request.method == "POST":
        form = MakeAttendance(request.POST)
        if form.is_valid():
            course = form.cleaned_data.get('courses')
            section = form.cleaned_data.get('section')
            year = form.cleaned_data.get('year')
            profile = UserProfile.objects.get_or_create(user=request.user)
            userobj = UserProfile(qrcode=unique_id)
            userobj.save().filter(course=course, section=section, year=year)
    return redirect('/users/dashboard')

这个问题在这里已经被回答了很多遍,但是没有一个解决方案对我有用。我尝试使用get_or_create方法创建用户个人资料。我尝试删除整个数据库,然后再次进行迁移。我手动尝试传递用户ID,但没有传递任何信息。

3 个答案:

答案 0 :(得分:0)

首先使用yarn start创建用户,然后使用user=User.objects.create_user(username=request.user, password='password')保存用户,然后使用user.save()创建个人资料。发生此错误的原因是因为UserProfile查找了您未提供的用户实例。

答案 1 :(得分:0)

问题出在这两行

userobj = UserProfile(qrcode=unique_id)
userobj.save().filter(course=course, section=section, year=year)

在第一行中,您仅创建了UserProfile的{​​{1}}实例 然后在下一行尝试保存它,这将尝试在没有用户的情况下在数据库中插入新行。

答案 2 :(得分:0)

在models.py中,您应该创建用户对象:

from django.conf import settings

User = settings.AUTH_USER_MODEL

创建类之前