瀏覽代碼

Updated serializers to get details in READ ONLY format

master
kj1352 3 年之前
父節點
當前提交
0162f1e6a4
共有 4 個文件被更改,包括 17 次插入20 次删除
  1. +10
    -6
      client/serializers.py
  2. +1
    -13
      invoice/models.py
  3. +3
    -1
      invoice/serializers.py
  4. +3
    -0
      project/serializers.py

+ 10
- 6
client/serializers.py 查看文件

@@ -26,13 +26,17 @@ class CitySerializer(serializers.ModelSerializer):
fields = ['id', 'name', 'state']


class ClientSerializer(serializers.ModelSerializer):
class Meta:
model = Client
fields = ['id', 'name', 'address']


class AddressSerializer(serializers.ModelSerializer):
tax_type = TaxTypeSerializer(read_only=True)

class Meta:
model = Address
fields = ['id', 'city', 'address_line1', 'address_line2', 'postal_code', 'tax_type', 'tax_id']


class ClientSerializer(serializers.ModelSerializer):
address = AddressSerializer(read_only=True)

class Meta:
model = Client
fields = ['id', 'name', 'address']

+ 1
- 13
invoice/models.py 查看文件

@@ -13,25 +13,13 @@ class Invoice(models.Model):
is_archived = models.BooleanField(default=False)

@property
def invoice_total(self):
def invoice_total_without_tax(self):
items = Item.objects.filter(invoice=self.pk)
total = 0
for item in items:
total += item.item_total
return total

@property
def invoice_total_after_tax(self):
items = Item.objects.filter(invoice=self.pk)
project = Project.objects.get(client=self.project)
client = Client.objects.get(pk=project.client)
address = Address.objects.get(pk=client.address)
tax_type = TaxType.objects.get(pk=address.tax_type)
total = 0
for item in items:
total += item.item_total
return total

def __str__(self):
return self.invoice_id



+ 3
- 1
invoice/serializers.py 查看文件

@@ -1,6 +1,7 @@
from rest_framework import serializers
from drf_writable_nested.serializers import WritableNestedModelSerializer
from .models import Item, Invoice
from project.serializers import ProjectSerializer


class ItemSerializer(serializers.ModelSerializer):
@@ -10,9 +11,10 @@ class ItemSerializer(serializers.ModelSerializer):


class InvoiceSerializer(WritableNestedModelSerializer):
project = ProjectSerializer(read_only=True)
items = ItemSerializer(many=True)

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

+ 3
- 0
project/serializers.py 查看文件

@@ -1,8 +1,11 @@
from rest_framework import serializers
from .models import Project
from client.serializers import ClientSerializer


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