로그인 정보에 auth.User 모델을 사용하고 모든 사용자 프로필 데이터에 대해 사용자 정의 UserProfile 모델을 사용하고 있습니다.Python - auth.User 모델을 OneToOneField로 사용하는 장고 쿼리
auth.User.username은 임의의 문자열입니다. 이고 UserProfile.user는 동일한 문자열입니다. 데이터베이스 테이블 "사용자 프로필"나는 다음과 같은 오류 얻을 쿼리를 시도 할 때
는는 :
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 객체와 비교하여 문자열을 사용합니다. 이 문제를 어떻게 해결할 수 있을지 모르겠다.
예, 이제 알았습니다. 우연히 전체 User 객체를 쿼리했습니다 ... – PhilS