在序列化中覆盖'RelatedField'时出现'AttributeError'

时间:2018-01-04 18:44:03

标签: python django rest

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

我有这个模型

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

关于'所有者'ForeignKey的注意事项。

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中返回什么,都会发生同样的错误。

我的问题是如何调试,理想情况下,修复此错误。 谢谢。

1 个答案:

答案 0 :(得分:1)

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