我正在尝试在我的应用程序的django form
模型内插入UserProfile
数据。我尝试使用django shell
和views.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,但没有传递任何信息。
答案 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
创建类之前