2010-05-23 146 views
6

我正在使用管理界面来查看发票和产品。为了方便起见,我已将产品设置为内置发票,因此我将以发票形式查看相关产品。正如你所看到的,我正在使用多对多的关系。如何在django admin中自定义多对多内联模型

在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个产品名称。而且桌子不美观。

我不需要通过发票形式更新产品。我怎样才能改变它,以便它只显示内联表中的产品名称? 我应该重写哪种形式,以及如何?

+0

在admin.py InvoiceAdmin它必须是内联= [ProductInline] – Timo 2014-05-01 14:31:24

回答

4

我觉得很简单,不要使用内联,只是使用属性ModelAdmin.filter_horizontal

+0

完全回答我的问题。但现在我有一个后续 - 这显示产品名称列表 - 如果我需要它链接到产品,以便我可以从发票链接到产品? – Jonathan 2010-05-24 07:04:46

+0

当您在发票中选择产品并保存您链接对象的对象 – diegueus9 2010-05-24 21:31:55

+0

提供的链接已停用 – 2015-01-11 02:07:08

相关问题