在序列化中重写“RelatedField”时使用“AttributeError”

2024-10-03 09:18:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用一个Django项目来实现Rest框架

我有这个型号

class Portfolio(models.Model):
    ticker = models.CharField(max_length=10, default='???')
    name = models.CharField(max_length=25)
    amount = models.FloatField()
    owner = models.ForeignKey('auth.User', related_name='portfolio', on_delete=models.CASCADE)

    def __str__(self):
        return self.name

“所有者”外键上的注释

在我的serializers.py中,我有这个

class MyRelatedField(serializers.RelatedField):
    def to_representation(self, obj):
    return 'Test'

class UserSerializer(serializers.ModelSerializer):
    portfolio = serializers.MyRelatedField(many=True)

    class Meta:
        model = User
        fields = ('url', 'id', 'username', 'portfolio')

正如我在docs上读到的那样,如果我想要一个自定义表示,我应该重写RelatedField(我已经重写了)。然而,当我试图运行时,我得到了这个错误

AttributeError: module 'rest_framework.serializers' has no attribute 'MyRelatedField'

无论我在MyRelatedField中返回什么,都会发生相同的错误

我的问题是如何调试并理想地修复此错误。 多谢各位


Tags: nameselfreturnmodelsdef错误lengthmax
1条回答
网友
1楼 · 发布于 2024-10-03 09:18:45

由于MyRelatedField和UserSerializer位于同一个模块中,您需要将portfolio = serializers.MyRelatedField(many=True)替换为portfolio = MyRelatedField(many=True)

相关问题 更多 >