【发布时间】:2021-03-13 02:05:16
【问题描述】:
我是一个全新的 Django,我正在使用 Django 构建一个电子商务网站。我想将模型的对象导出为 xlsx 格式。我正在使用 django-import-export 库来执行此操作,但问题是该库导出模型的所有对象。我只想导出一个对象。例如,如果有人订购产品,我希望将该订单对象导出为 xlsx 格式。我可以在 python shell 中编写它,但我希望它在管理面板中完成。在下图中,您可以看到我的 Order 模型和 OrderItem 模型。我怎样才能完全像在图片中一样导出到 xlsx。
模型.py
class Order(models.Model):
STATUS = (("NEW", "NEW"), ("ACCEPTED", "ACCEPTED"), ("COMPLETED", "COMPLETED"))
customer = models.ForeignKey(Customer,on_delete=models.CASCADE, blank=True, null=True)
name = models.CharField(max_length=50)
surname = models.CharField(max_length=50)
phone = models.CharField(max_length=50)
email = models.EmailField(max_length=50, blank=True)
address = models.CharField(max_length=100)
status=models.CharField(max_length=10, choices=STATUS,default='NEW')
total = models.FloatField()
adminnote = models.CharField(max_length=100, blank=True)
updated_at=models.DateTimeField(auto_now=True)
ordered_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name + self.surname
class OrderItem(models.Model):
order = models.ForeignKey(Order, on_delete=models.CASCADE)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
quantity = models.IntegerField()
price = models.DecimalField(max_digits=8, decimal_places=2)
total_price = models.DecimalField(max_digits=8, decimal_places=2)
date_added = models.DateTimeField(auto_now_add=True)
admin.py
class OrderProductline(admin.TabularInline):
model = OrderItem
readonly_fields = ('order', 'product', 'price', 'quantity', 'total_price')
can_delete = False
extra = 0
class OrderResource(resources.ModelResource):
class Meta:
model = Order
class OrderAdmin(ImportExportModelAdmin):
list_display = ['name', 'surname', 'phone', 'address', 'total', 'status', 'ordered_at']
list_filter = ['status']
exclude = ['customer']
readonly_fields = ('name', 'surname', 'email', 'phone', 'address', 'total')
can_delete = False
inlines = [OrderProductline]
resource_class = OrderResource
class OrderProductAdmin(admin.ModelAdmin):
list_display = ['order', 'product', 'price', 'quantity','total_price']
list_filter = ['order']
admin.site.register(Order, OrderAdmin,)
admin.site.register(OrderItem, OrderProductAdmin)
我正在使用 Django 3.0.0 python 3.7
【问题讨论】:
标签: python django django-import-export