我使用auth.User
模型登录信息,并使用自定义UserProfile
模型查看所有用户的个人资料数据。
auth.User.username
是一个随机字符串。
并且UserProfile
。user是相同的字符串。
尝试查询数据库表时,UserProfile
"我收到以下错误:
ValueError: invalid literal for int() with base 10: '3df69698-c97d-11e7-a924-b0c0905e8512'
models.py
from django.db import models
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
first_name = models.CharField(max_length=256, default=None)
last_name = models.CharField(max_length=256, default=None)
...
def __str__(self):
return str(self.user)
views.py
from .models import UserProfile
from django.contrib.auth.models import User
def get_users(request):
data = json.loads(request.body.decode('utf-8'))
user_id = escape(data['id'])
# error occurs here
user_pref = UserProfile.objects.get(user=user_id)
当尝试查询数据库并使用与auth.User
对象相比较的字符串时,会出现问题。我不知道怎么解决这个问题?
答案 0 :(得分:1)
也许这个:
UserProfile.objects.get(user__user_id=user_id)
答案 1 :(得分:1)
该字符串应该是用户名吗?如果是这样,您应该明确地查询该字段:
UserProfile.objects.get(user__username=user_id)