Sto utilizzando l'interfaccia di amministrazione per visualizzare fatture e prodotti. Per semplificare le cose, ho impostato i prodotti come inline alle fatture, quindi vedrò i prodotti correlati nel modulo della fattura. Come puoi vedere sto usando una relazione molti-a-molti.Come personalizzare un modello in linea many-to-many in django admin
In 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)
In admin.py:
class ProductInline(admin.StackedInline):
model = Invoice.products.through
class InvoiceAdmin(admin.ModelAdmin):
inlines = [FilteredApartmentInline,]
admin.site.register(Product, ProductAdmin)
Il problema è che Django presenta i prodotti come una tabella di menu a discesa (uno per prodotto associato). Ogni discesa contiene tutti i prodotti elencati. Quindi, se ho 5000 prodotti e 300 associati a una certa fattura, django carica effettivamente 300x5000 nomi di prodotti. Anche il tavolo non è estetico.
Non ho bisogno che i prodotti siano aggiornabili tramite il modulo di fattura. Come posso cambiarlo in modo che mostri solo il nome del prodotto nella tabella in linea? Quale forma devo sostituire, e come?
In admin.py InvoiceAdmin deve essere inline = [] ProductInline – Timo