У объекта 'User' нет атрибута 'rank'
У меня есть модель UserProfile, которая имеет систему ранжирования, но проблема в том, что она продолжает получать некоторые ошибки атрибутов
class UserProfile(models.Model):
user= models.OneToOneField(User, on_delete=models.CASCADE,null=True)
profile_pic = models.ImageField(blank=True, null=True, default='default.png')
bio = models.TextField(null=True,blank=True)
id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True, editable=False)
username = models.CharField(max_length=255,null=True,blank=False)
rating= models.IntegerField(default=200,null=True,blank=False)
major = models.ForeignKey(Major,on_delete=models.SET_NULL,null=True,related_name="major")
rank = models.ForeignKey(Rank,on_delete=models.SET_NULL,null=True,related_name="rank")
def __str__(self):
return self.username
и вот его сериализатор
class UserProfileSerializer(serializers.ModelSerializer):
profile_pic = serializers.SerializerMethodField(read_only=True)
rank = serializers.SerializerMethodField(read_only=True)
major = serializers.SerializerMethodField(read_only=True)
class Meta:
model = UserProfile
fields = '__all__'
def get_profile_pic(self, obj):
try:
pic = obj.profile_pic.url
except:
pic = None
return pic
def get_rank(self,obj):
rank = obj.rank
serializer = RankSerializer(rank,many=False)
return serializer.data
def get_major(self,obj):
major = obj.major
serializer = MajorSerializer(major,many=False)
return serializer.data
Я не знаю почему, но я получаю эту ошибку пользователя Может кто-нибудь помочь мне, пожалуйста
здесь весь стек-трейс ошибки Я добавляю это, чтобы убедиться, что stackoverflow будет в порядке со всеми этими строками кода, еще кое-что, не смотрите на это, не тратьте свое время, пожалуйста, извините
Я нашел проблему, она была в моем questionSerializer, который я должен был убедиться, что я получаю userprofile obj вот код, если хотите
class QuestionSerializer(serializers.ModelSerializer):
user = serializers.SerializerMethodField(read_only=True)
class Meta:
model=Question
fields = "__all__"
def get_user(self,obj):
user = obj.user.userprofile #edited this from obj.user
serializer = UserProfileSerializer(user,many=False)
return serializer.data