浏览代码

Added detailed invoice API

master
kj1352 3 年前
父节点
当前提交
bbba08d204
共有 4 个文件被更改,包括 22 次插入2 次删除
  1. +9
    -0
      invoice/serializers.py
  2. +1
    -0
      invoice/urls.py
  3. +8
    -1
      invoice/views.py
  4. +4
    -1
      project/serializers.py

+ 9
- 0
invoice/serializers.py 查看文件

@@ -11,6 +11,15 @@ class ItemSerializer(serializers.ModelSerializer):


class InvoiceSerializer(WritableNestedModelSerializer):
items = ItemSerializer(many=True)

class Meta:
model = Invoice
fields = ['id', 'title', 'project', 'invoice_id', 'raised_date', 'due_date', 'paid_date', 'is_archived',
'invoice_total_with_tax', 'items']


class DetailedInvoiceSerializer(serializers.ModelSerializer):
project = ProjectSerializer(read_only=True)
items = ItemSerializer(many=True)



+ 1
- 0
invoice/urls.py 查看文件

@@ -6,6 +6,7 @@ from rest_framework import routers
router = routers.DefaultRouter()
router.register(r'items', views.ItemViewSet)
router.register(r'invoices', views.InvoiceViewSet)
router.register(r'detailed-invoices', views.DetailedInvoiceViewSet)


urlpatterns = [


+ 8
- 1
invoice/views.py 查看文件

@@ -2,7 +2,7 @@ from rest_framework import viewsets
from rest_framework.authentication import TokenAuthentication, SessionAuthentication
from rest_framework.permissions import IsAuthenticated
from .models import Item, Invoice
from .serializers import ItemSerializer, InvoiceSerializer
from .serializers import ItemSerializer, InvoiceSerializer, DetailedInvoiceSerializer


class ItemViewSet(viewsets.ModelViewSet):
@@ -17,3 +17,10 @@ class InvoiceViewSet(viewsets.ModelViewSet):
serializer_class = InvoiceSerializer
authentication_classes = [TokenAuthentication, SessionAuthentication]
permission_classes = [IsAuthenticated]


class DetailedInvoiceViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Invoice.objects.all()
serializer_class = DetailedInvoiceSerializer
authentication_classes = [TokenAuthentication, SessionAuthentication]
permission_classes = [IsAuthenticated]

+ 4
- 1
project/serializers.py 查看文件

@@ -1,11 +1,14 @@
from rest_framework import serializers
from .models import Project
from client.serializers import ClientSerializer
from employee.serializers import EmployeeSerializer


class ProjectSerializer(serializers.ModelSerializer):
client = ClientSerializer(read_only=True)
employee_set = EmployeeSerializer(read_only=True, many=True)
class Meta:
model = Project
fields = ['id', 'name', 'project_image', 'client', 'total_compensation', 'start_date', 'end_date']
fields = ['id', 'name', 'project_image', 'client', 'total_compensation', 'start_date', 'end_date',
'employee_set']