2017-11-14 8 views
1

私はログイン情報にauth.Userモデルを使用し、ユーザーのすべてのプロファイルデータに対してカスタムUserProfileモデルを使用しています。Python - Auth.UserモデルをOneToOneFieldとして使用するDjangoクエリ

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オブジェクトと比較して文字列を使用します。私はこれを回避する方法を知らない?

答えて

1

その文字列は、ユーザ名ことになっていますか?もしそうなら、あなたは明示的にそのフィールドを照会する必要があります

UserProfile.objects.get(user__username=user_id) 
+0

はい、私は今、私はUserオブジェクト全体を誤ってクエリしています... – PhilS

1

は多分この:

UserProfile.objects.get(user__user_id=user_id) 
+0

を新しいエラー与えること: '関連フィールドが無効な検索を得た: – PhilS

+0

user_id'あなたは正しかったが、ダニエルは言ったように、auth.Userモデルからユーザー名を! – PhilS

+0

はい、そうです。 lol – anmaxvl

関連する問題