django - Django Rest Framework如何访问序列化器中的字段

标签 django django-rest-framework

我有一个名为Video的模型

class Video(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    name = models.CharField(max_length=100, blank=False, null=False, default='', unique=True)
    file = models.FileField(upload_to='videos/', blank=False, null=False)
    owner = models.ForeignKey('auth.User', related_name='videos', on_delete=models.CASCADE, verbose_name='')

    def __str__(self):
        return self.name + ': ' + self.file.name

    class Meta:
        ordering = ('created',)

及其序列化器:
class VideoSerializer(serializers.ModelSerializer):
    owner = serializers.ReadOnlyField(source='owner.username')

    class Meta:
        model = Video
        fields = ['name', 'file', 'owner']

我试图访问序列化程序中的字段,因为我需要它进行一些处理:
def post(self, request):
    serializer = VideoSerializer(data=request.data)
    if serializer.is_valid():
        # I need the name of the file!!!!!
        # accessing the fields below
        print(serializer.name)
        print(serializer.file.name)
        # accessing the fields above
        serializer.save(owner=request.user)
        videos = Video.objects.filter(owner=request.user)
        return Response({'videos': videos, 'serializer': VideoSerializer(), 'style': self.style})
    return Response(data=None, status=status.HTTP_400_BAD_REQUEST, template_name='videoserver/error.html')

但是当我发出请求时,它将报告此错误:
AttributeError: 'VideoSerializer' object has no attribute 'name'


AttributeError: 'VideoSerializer' object has no attribute 'file'

任何建议将不胜感激!

最佳答案

错误可能在您的print()语句中。如果serializer有效,则序列化的数据将在 serializer.data 中可用。

因此,它应该是

serializer.data['name']
而不是
serializer.name

关于django - Django Rest Framework如何访问序列化器中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52221362/

相关文章:

python - 发布到 Django 休息框架

python - Django 中的文件上传表单

python - 具有多个应用程序的 Django 静态文件

python - Django select_related 不执行任何操作

django - 将 django-endless-pagination 与扩展 ListView 的基于 C 的自定义 View 结合使用

python - 将数据从 CSV 加载到 Django 中的数据库表

python - 从 Python 类外部的函数引用定义的变量

python - 在djangorest框架中上传图像作为原始数据

python - Django api 返回模型 ID 而不是模型的标题

python - Django休息框架: Serializing a model and grouping by a foreign key for other data