Ошибка типа: Поле 'id' ожидало число, но получило <Пользователь: ILador>

Я работаю с моделями Django и Django-Rest-Framework. Когда я пытаюсь получить доступ к моделям через Rest-Framework, я получаю "TypeError at /home/profiles/: Field 'id' expected a number but got <User: ILador>."

вот мой код:

Models.py-

from django.db import models
from django.contrib.auth.models import User
from django.core.validators import MaxValueValidator, MinValueValidator
from datetime import date
from .countries import COUNTRIES



class Profile(models.Model):

    user = models.ForeignKey(User, on_delete=models.CASCADE)

    def username(self):
        usern = User.objects.get(id=self.user)
        usern = usern.username
        return usern

    setup = models.BooleanField(default=False)
    dob = models.DateField()

    def age(self):
        today = date.today()
        age = today.year - self.birthday.year - ((today.month, today.day) < (self.birthday.month, self.birthday.day))
        return age

    orgin = models.CharField(max_length=300, choices=COUNTRIES)
    lives = models.CharField(max_length=300, choices=COUNTRIES)
    bio = models.CharField(max_length=150)
    email = models.CharField(max_length=255)
    hobbies = models.CharField(max_length=225)
    image = models.ImageField(upload_to='images')

Serializers.py-


from rest_framework import serializers
from .models import Profile
from django.contrib.auth.models import User
from rest_framework.authtoken.models import Token

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields =('id', 'username', 'password')
        extra_kwargs = {'password': {'write_only': True, 'required': True}}

    def create(self, validated_data):
        user = User.objects.create_user(**validated_data)
        Token.objects.create(user=user)
        return user


class ProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = Profile
        fields=( 'id', 'username','email', 'setup', 'dob', 'age', 'orgin', 'lives', 'bio', 'hobbies', 'image',)

Почему я получаю эту ошибку?

    def username(self):
        usern = User.objects.get(id=self.user) # <--
        usern = usern.username
        return usern

Вот ошибка: self.user является экземпляром класса User, измените эту строку кода, чтобы использовать его свойство id usern = User.objects.get(id=self.user.id)

UPD: Возможно, вам даже не нужен этот метод .get(...), просто:

    def username(self):
        return self.user.username
Вернуться на верх