【发布时间】:2011-02-23 01:10:20
【问题描述】:
我正在使用管理界面查看发票和产品。为方便起见,我将产品设置为内联到发票,因此我将在发票的表单中看到相关产品。如您所见,我使用的是多对多关系。
在models.py中:
class Product(models.Model):
name = models.TextField()
price = models.DecimalField(max_digits=10,decimal_places=2)
class Invoice(models.Model):
company = models.ForeignKey(Company)
customer = models.ForeignKey(Customer)
products = models.ManyToManyField(Product)
在 admin.py 中:
class ProductInline(admin.StackedInline):
model = Invoice.products.through
class InvoiceAdmin(admin.ModelAdmin):
inlines = [FilteredApartmentInline,]
admin.site.register(Product, ProductAdmin)
问题在于 django 将产品显示为下拉菜单表(每个关联产品一个)。每个下拉列表都包含列出的所有产品。因此,如果我有 5000 个产品并且 300 个与某个发票相关联,那么 django 实际上会加载 300x5000 个产品名称。桌子也不美观。
我不需要通过发票表格更新产品。我该如何更改它,以便它只在内联表中显示产品名称? 我应该覆盖哪个表单,以及如何覆盖?
【问题讨论】:
-
在 admin.py InvoiceAdmin 中必须是 inlines=[ProductInline]
标签: python django django-admin many-to-many django-forms