serializer.py
Метод get_invoice_list, вызывающий invoice_date () несколько раз, но некоторые данные отсутствуют, когда я пытаюсь преобразовать invoice_list в dict,
class InvoiceDetailSerializer(ModelSerializer):
invoice_list = serializers.SerializerMethodField()
def get_invoice_list(self, obj):
invoice_list =[]
if obj.get_invoice_users.all():
first = False
second = False
third = False
reg_invoices = obj.get_invoice_users.all().filter(type__in=[0,1]).order_by('created_date')
if reg_invoices:
inv_string = 'INV'+str(obj.get_invoice_number)+'001'
new_list1 = self.get_invoice_data(reg_invoices, inv_string)
invoices_list.append(new_list)
first = True
hotel_invoices = obj.get_invoice_users.all().filter(type__in=[3,5]).order_by('created_date')
if hotel_invoices:
second = True
if first:
inv_string = 'INV'+str(obj.get_invoice_number)+'002'
else:
inv_string = 'INV'+str(obj.get_invoice_number)+'001'
new_list2 = self.get_invoice_data(hotel_invoices, inv_string)
invoices_list.append(new_list2)
return invoices_list
def get_invoice_data(self, inv_list, inv_key):
invoices_list = []
reg_invoices_list = []
index=0
new_dict = {}
for index, each_invoice in enumerate(inv_list):
new_dict['first_name'] = each_invoice.users.user.first_name
new_dict['invoice_number'] = inv_key
return new_dict
представление:
class InvoiceDetailViewSet(ModelViewSet):
serializer_class = InvoiceDetailSerializer
queryset = EventUsers.objects.all()
permission_classes = [AllowAny, ]
ответ:
Теперь я получаю ответ, подобный этому,
[
{
"invoice_list": [
{
"invoice_number": "INV013001",
"first_name": "546546",
},
{
"invoice_number": "INV013002",
"first_name": "546546",
}
]
}
]
Я хочу второй dict, т.е. "invoice_number": "INV013002", как другой, не вАррей, как я могу это сделать,
[
{
"invoice_list": [
{
"invoice_number": "INV013001",
"first_name": "546546",
}
]
},
{
"invoice_list": [
{
"invoice_number": "INV013002",
"first_name": "546546",
}
]
},
]