Estoy usando la interfaz de administración para ver facturas y productos. Para facilitar las cosas, he configurado los productos como en línea para las facturas, por lo que veré los productos relacionados en el formulario de la factura. Como pueden ver, estoy usando una relación de muchos a muchos.Cómo personalizar un modelo en línea de muchos a muchos en django admin
En 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)
En admin.py:
class ProductInline(admin.StackedInline):
model = Invoice.products.through
class InvoiceAdmin(admin.ModelAdmin):
inlines = [FilteredApartmentInline,]
admin.site.register(Product, ProductAdmin)
El problema es que django presenta los productos como una tabla de menús desplegables (uno por producto asociado). Cada menú desplegable contiene todos los productos enumerados. Entonces, si tengo 5000 productos y 300 están asociados con una determinada factura, django realmente carga 300x5000 nombres de productos. Además, la mesa no es estética.
No necesito que los productos sean actualizables mediante el formulario de factura. ¿Cómo puedo cambiarlo para que solo muestre el nombre del producto en la tabla en línea? ¿Qué formulario debo anular y cómo?
En admin.py InvoiceAdmin debe ser Inlines = [] ProductInline – Timo