首页 > 解决方案 > 用于成员模型的 Django 休息框架序列化程序?

问题描述

我如何将序列化程序用于这样的事情

class Language(BaseModel):
    name = models.CharField(null=False, blank=False, unique=True, max_length=150)

class Helper(BaseModel):
    languages = models.ManyToManyField('Language', blank=True, through="HelperLanguage")

class HelperLanguage(BaseModel):
    helper = models.ForeignKey('Helper', on_delete=models.CASCADE)
    language = models.ForeignKey('Language', on_delete=models.CASCADE)
    read = models.BooleanField()
    write = models.BooleanField()
    speak = models.BooleanField(default=True)

class LanguageSerializer(ModelSerializer):
    class Meta:
        model = Language
        fields = ["id", "name"]


class HelperLanguageSerializer(ModelSerializer):
    language = LanguageSerializer(read_only=True)
    class Meta:
        model = HelperLanguage
        fields = ["id", "language", "read", "write", "speak"]


class HelperPublicSerializer(ModelSerializer):
    languages = HelperLanguageSerializer(read_only=True, many=True)
   
    class Meta:
        model = Helper
        fields = ['id', 'languages']

使用 HelperPublicSerialiser 进行列表视图时出现错误

read尝试获取序列化程序上的字段值时出现 AttributeError HelperLanguageSerializer。序列化器字段可能命名不正确,并且与Language实例上的任何属性或键都不匹配。我确实理解这个问题,但找不到任何可能没有正确使用会员模式的解决方案。

标签: djangodjango-rest-frameworkdjango-serializer

解决方案


推荐阅读