shadow_mso

Untitled

Aug 4th, 2020 (edited)
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.72 KB | None | 0 0
  1. # Models
  2. class Purchaser(models.Model):
  3.     name = models.CharField(max_length=50, blank=True, null=True)
  4.     phone = models.CharField(max_length=20, blank=True, null=True)
  5.     email = models.EmailField(max_length=255, blank=True)
  6.     image = models.ImageField(default='default.png', upload_to='customer_photos/%Y/%m/%d/')
  7.     data_added = models.DateField(default=datetime.date.today)
  8.  
  9.     def __str__(self):
  10.         return self.name
  11.  
  12. class paymentInvoice(models.Model):
  13.  
  14.     invoiceNo = models.CharField(max_length=50, unique=True, default=increment_invoice_number)
  15.     invoiceOwner = models.ForeignKey(Purchaser, on_delete=models.CASCADE, related_name="invoice_detail")
  16.     product = models.CharField(max_length=50, blank=True)
  17.     date = models.DateField(default=datetime.date.today)
  18.     quantity = models.PositiveSmallIntegerField(blank=True, default=1)
  19.     payment_made = models.IntegerField(default=0)
  20.  
  21.     def __str__(self):
  22.         return self.invoiceOwner.name
  23.  
  24.  
  25. # Serializers
  26. class purchaserSerializer(serializers.ModelSerializer):
  27.     phone = serializers.StringRelatedField(read_only=True)
  28.     email = serializers.StringRelatedField(read_only=True)
  29.     image = serializers.StringRelatedField(read_only=True)
  30.     data_added = serializers.StringRelatedField(read_only=True)
  31.     class Meta:
  32.         model = Purchaser
  33.         fields = ('id', 'name', 'phone', 'email', 'image', 'data_added')
  34.  
  35.  
  36. class paymentInvoiceSerializer(serializers.ModelSerializer):
  37.     invoiceOwner = purchaserSerializer(many=False)
  38.     class Meta:
  39.         model = paymentInvoice
  40.         fields = '__all__'
  41.  
  42.  
  43.     def create(self, validated_data):
  44.         purchaser_data = validated_data.pop("invoiceOwner")
  45.         purchaser = Purchaser.objects.create(**purchaser_data)
  46.         return paymentInvoice.objects.create(**validated_data)
  47.  
  48. # views
  49. class paymentInvoiceListCreateView(ListCreateAPIView):
  50.  
  51.     serializer_class = paymentInvoiceSerializer
  52.     queryset = paymentInvoice.objects.all().order_by('-date')
  53.  
  54. # POST data to Postman
  55. {
  56.     "invoiceOwner": {"name":"Becky"},
  57.     "product": "Lix",
  58.     "mode": "Mpesa",
  59.     "quantity": 1,
  60.     "status": "Pending",
  61.     "payment_made": 3000
  62. }
  63.  
  64. # GET data request from postman
  65. {
  66.     "count": 8,
  67.     "next": null,
  68.     "previous": null,
  69.     "results": [
  70.         {
  71.             "id": 1,
  72.             "invoiceOwner": "Martin",
  73.             "invoiceNo": "INV-0001",
  74.             "product": "",
  75.             "mode": "Mpesa",
  76.             "date": "2020-08-04",
  77.             "quantity": 1,
  78.             "status": "Pending",
  79.             "payment_made": 0
  80.         },
  81.         {
  82.             "id": 2,
  83.             "invoiceOwner": "Becky",
  84.             "invoiceNo": "INV-0002",
  85.             "product": "",
  86.             "mode": "Mpesa",
  87.             "date": "2020-08-04",
  88.             "quantity": 1,
  89.             "status": "Pending",
  90.             "payment_made": 0
  91.         },
  92.         {
  93.             "id": 3,
  94.             "invoiceOwner": "Maggy",
  95.             "invoiceNo": "INV-0003",
  96.             "product": "",
  97.             "mode": "Mpesa",
  98.             "date": "2020-08-04",
  99.             "quantity": 1,
  100.             "status": "Pending",
  101.             "payment_made": 0
  102.         },
  103.         {
  104.             "id": 4,
  105.             "invoiceOwner": "Martin",
  106.             "invoiceNo": "INV-0004",
  107.             "product": "Cerrazzo",
  108.             "mode": "Mpesa",
  109.             "date": "2020-08-04",
  110.             "quantity": 1,
  111.             "status": "Paid",
  112.             "payment_made": 2
  113.         },
  114.         {
  115.             "id": 5,
  116.             "invoiceOwner": "Maggy",
  117.             "invoiceNo": "INV-0005",
  118.             "product": "Sepit",
  119.             "mode": "Mpesa",
  120.             "date": "2020-08-04",
  121.             "quantity": 1,
  122.             "status": "Paid",
  123.             "payment_made": 2000
  124.         },
  125.         {
  126.             "id": 11,
  127.             "invoiceOwner": null,
  128.             "invoiceNo": "INV-0006",
  129.             "product": "Lix",
  130.             "mode": "Mpesa",
  131.             "date": "2020-08-04",
  132.             "quantity": 1,
  133.             "status": "Pending",
  134.             "payment_made": 3000
  135.         },
  136.         {
  137.             "id": 12,
  138.             "invoiceOwner": null,
  139.             "invoiceNo": "INV-0007",
  140.             "product": "Lix",
  141.             "mode": "Mpesa",
  142.             "date": "2020-08-04",
  143.             "quantity": 1,
  144.             "status": "Pending",
  145.             "payment_made": 3000
  146.         },
  147.         {
  148.             "id": 13,
  149.             "invoiceOwner": null,
  150.             "invoiceNo": "INV-0008",
  151.             "product": "Lix",
  152.             "mode": "Mpesa",
  153.             "date": "2020-08-04",
  154.             "quantity": 1,
  155.             "status": "Pending",
  156.             "payment_made": 0
  157.         }
  158.     ]
  159. }
  160.  
Add Comment
Please, Sign In to add comment