Я использую администраторский интерфейс для просмотра счетов и продуктов. Для создания вещей легкими я установил продукты как встроенные к счетам, таким образом, я буду видеть сопутствующие товары в форме счета. Поскольку Вы видите, что я использую many-many отношения.
В 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 представляет продукты как таблицу выпадающих меню (один на связанный продукт). Каждый выпадающий содержит все перечисленные продукты. Таким образом, если у меня есть 5 000 продуктов, и 300 связаны с определенным счетом, django на самом деле загружается 300x5000 названия продукта. Также таблица не эстетична.
Мне не нужны продукты, чтобы быть обновляемым через форму счета. Как я могу изменить его так, чтобы это просто отобразило имя продукта во встроенной таблице? Какую форму я должен переопределить, и как?
Я думаю, что это просто, не используйте встроенный, просто используйте свойство ModelAdmin.filter_horizontal