Сделайте вид отключенным после некоторого логического значения в отдыхе django - PullRequest
0 голосов
/ 29 июня 2018

models.py

class One(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    one = models.CharField(max_length=20)
    ses = models.IntegerField()
    occupied = models.BooleanField(default=False)

У меня есть occupied логическое поле, которое по умолчанию равно False. Я хочу, чтобы соответствующие представления отключались или читались только после того, как занято True

serializers.py

class OneSerializer(serializers.ModelSerializer):
    class Meta:
        model = One
        field = '__all__'
        read_only_fields = ('user',)

views.py

class OneView(APIView):
    @staticmethod
    def get(request):
        user = request.user
        apt = One.objects.filter(user=user)
        if type(apt)==Response:
            return apt
        return Response(OneSerializer(apt).data)

    @staticmethod
    def post(request):
        serializer  = OneSerializer(data=request.data, context = {'request':request})
        if serializer.is_valid():
            user = request.user
            serializer.save(user=user)
            return Response(OneSerializer(serializer.instance).data, status=201)
        return Response(serializer.errors, statusl=400)

Как сделать так, чтобы такая функция была занята True, сделать соответствующий просмотр доступным только для пользователя-владельца?

1 Ответ

0 голосов
/ 29 июня 2018

Попробуйте изменить метод get(), как показано ниже

class OneView(APIView):
    <strike>@staticmethod</strike>
    def get(<b>self,</b> request, <b>**kwargs</b>):
        user = request.user
        apt = One.objects.<b>get(user=user)</b>
        <b>if apt.occupied:
            return Response(OneSerializer(apt).data)
        return Response()</b>

Если вы вернете что-либо кроме HttpResponse, например, класса , DRF повысит AssertionError как

AssertionError в / some / end / point / Ожидаемый ответ, HttpResponse или HttpStreamingResponse, который будет возвращен из представления, но получил

Кроме того, я не думаю, что вам нужно @staticmethod в ваших методах. DRF-Doc научил нас делать это без staticmethod декоратора.

...