媒体文件未正确返回

时间:2017-05-29 12:12:19

标签: python django caching django-rest-framework

models.py:

   class FWVersion(models.Model):
        bin_file = models.FileField(upload_to='fW_media/bin/')
        date_created = models.DateTimeField(default=timezone.now)
        name = models.CharField(max_length=64)

serializers.py:

class UploadFWSerializer(serializers.ModelSerializer):
    class Meta:
        model = FWVersion
        exclude = ('date_created',)

class GetFWSerializer(serializers.ModelSerializer):
    class Meta:
        model = FWVersion
        fields = ('name', 'bin_file',
        )

views.py:

class GetFWView(viewsets.ModelViewSet):
    queryset = FWVersion.objects.all()
    serializer_class = serializers.GetFWSerializer

    def get_object(self):
        lastest_fw = FWVersion.objects.first()
        return lastest_fw

class UploadFWView(mixins.CreateModelMixin,
                  generics.GenericAPIView):
    serializer_class = serializers.UploadFWSerializer

    def post(self, request, *args, **kwargs):
        return self.create(request, *args, **kwargs)

我正在使用django-rest-framework来创建用于上传和检索.bin文件的最新版本的API。 API正常运行,我可以在服务器上上传.bin个文件。但是当再次下载文件时,即使名称url是最新上传的文件,服务器也会返回第一个上传的文件(最旧的文件)。但有时很少会返回最新的文件。我检查了服务器文件,它们正在正确上传。这是因为Django的一些缓存还是我错过了什么?请帮忙。

2 个答案:

答案 0 :(得分:0)

您的代码非常清楚地在first()中的查询集上调用GetFWView,所以我不确定为什么这种行为会让您感到惊讶。如果你想总是返回最新的,那么你应该这样做:

def get_object(self):
    lastest_fw = FWVersion.objects.latest('date_created')

另外,您不应该为该视图使用ViewSet;它只支持一个操作,即GET,所以你应该使用RetrieveAPIView

答案 1 :(得分:0)

Set-WmiInstance -Class TestShare -Puttype CreateOnly -Argument @{Name = "TestShare" ; Permissions = "TestPermission"}