【发布时间】:2017-07-11 10:07:39
【问题描述】:
我是 DRF 的新手,我想做一些类似于 django 表单中的表单集的事情
我有一个Invoice 和Products 彼此相关的模型抛出多对多InvoiceDetail 模型.. 当我创建发票时,我选择一些产品并为每个产品创建一个InvoiceDetail 对象.. 我想做这在 DRF 中如何序列化 Invoice 模型并创建函数呢?
还是我应该这样做?
models.py:
class Invoices(models.Model):
#some fields
products = models.ManyToManyField('Products', through='InvoiceDetail')
class Products(models.Model):
#some fields
class InvoiceDetail(models.Model):
invoice = models.ForeignKey(Invoices, related_name='parent_invoice')
product = models.ForeignKey(Products, related_name='parent_product')
product_description = models.TextField()
product_price = models.DecimalField(max_digits=9, decimal_places=2)
quantity_sold = models.IntegerField()
serializers.py:
class ProductsSerializer(serializers.ModelSerializer):
class Meta:
model = Products
fields = ('barcode', 'product_code', 'name', 'description', 'category',
'quantity_in_stock', 'quantity_on_hold', 'expire_date',
'vendor', 'manufacturer', 'discount')
class InvoiceDetailsSerializer(serializers.ModelSerializer):
class Meta:
model = InvoiceDetail
fields = '__all__'
view.py:
class ProductsView(viewsets.ReadOnlyModelViewSet):
queryset = Products.objects
serializer_class = ProductsSerializer
class InvoicesView(viewsets.ModelViewSet):
queryset = Invoices.objects
serializer_class = InvoicesSerializer
class InvoiceDetailView(viewsets.ModelViewSet):
queryset = InvoiceDetail.objects
serializer_class = InvoiceDetailsSerializer
【问题讨论】:
-
不,我的问题不同,我不想序列化
Invoice中的 products 字段,我想创建另一个模型的实例InvoiceDetail
标签: python django django-rest-framework