Django Rest Framework: пользовательские формы, выходные данные JSON - PullRequest
0 голосов
/ 17 марта 2020

Мне нужно использовать Django Rest Framework для разработки формы, которая принимает 2 ввода, идентификатор клиента и номер места, и эта форма должна быть ограничена 10 клиентами. Мой вывод JSON должен иметь идентификатор клиента, номер места, customer_occupancy (который равен 2 * customer_id) и общую занятость клиента (которая является суммой всех значений customer_occupancy, введенных до этого момента). Я добавил свой код для models.py и views.py ниже. Я понятия не имею, как обеспечить, чтобы в форме не было более одного поля, для которого необходимо ввести значение (номер места), и почему queryset.update () не приводит к каким-либо изменениям в выводе. Любая помощь для решения этой проблемы будет высоко ценится.

models.py:

from django.db import models

class Hero(models.Model):
    seat_number = models.CharField(max_length=160, default='No Comment')
    customer_occupancy = models.IntegerField(default = 0)
    total_cust_occupancy = models.IntegerField(default = 0)


    def __int__(self):
        return self.id

views.py:

from django.shortcuts import render
from rest_framework import viewsets
from .serializers import HeroSerializer
from .models import Hero

global total
total = 0

class HeroViewSet(viewsets.ModelViewSet):

global total
    queryset = Hero.objects.all().order_by('id')

    for idx, i in enumerate(queryset):
        queryset[idx].customer_occupancy = 2*int(queryset[idx].id)
        total += queryset[idx].customer_occupancy
        queryset[idx].total_customer_occupancy = total
        print(queryset[idx].customer_occupancy)
        print(total)
        print(queryset[idx].total_customer_occupancy)

    queryset.update()

    serializer_class = HeroSerializer

serializers.py:

from rest_framework import serializers

from .models import Hero

class HeroSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Hero
        fields = ('id', 'seat_number', 'customer_occupancy', 'total_customer_occupancy')

...