Найти - Пользователи
Полная версия: ForeignKey, отображение в админке.
Начало » Django » ForeignKey, отображение в админке.
1
maxwell
Что пытаюсь сделать:
Есть инвойс, в инвойсе есть ссылки на продукты, их цена и количество.
Сейчас сделал промежуточную модель:
class Product(models.Model):
<..>many fields<..>

class Ivoice(models.Model):
<..>many fields<..>

class InvoiceProduct(models.Model):
product = models.ForeignKey(Product)
invoice = models.ForeignKey(Invoice)
quantity
price
Во-первых, сразу смущает эта «промежуточная модель», по сути она нужна только из-за кол-ва и цены (которая по дефолту как у продукта, но, есть возможность изменить). Да и хранит информацию она всегда (ну, потом переопределю метод удаления и при удалении инвойса буду удалять и записи из этой таблицы)
Во-вторых, в админке приходится делать Inline для инвойса, но заказчику не нравится внешний вид и функциональность.
Сейчас есть Inline для InvoiceProduct, в нем есть raw_id_field (для продукта). Клиенту приходится нажимать на кнопку выбора продукта &#8594; выскакивает окно &#8594; выбирает продукт &#8594; окно закрылось &#8594; в инлайне заполнил кол-во и цену.

Он хочет так: Он нажимает «Добавить продукт», открывается окошко, он выбирает продукт, кол-во, цену, жмакает добавить и он добавляется в «основном» окне.

Мои соображения:
1. В сети видел какое-то решение с AJAX'ом для более удобного интерфейса добавления ForeignKey, там скриншотов не было, на взгляд оценить по коду то ли это не смог. Позже попробую поставить и посмотреть.
2. Писать свой Админ-модуль (на ряду с TabularInline и StackedInline), с темплейтами, обработчиками и прочим. (Пока пугает отсутствие опыта написания такого и видимый объем работы)
3. ???
Буду рад любым соображениям.
Haikson
см. в сторону InlineModelAdmin
https://docs.djangoproject.com/en/dev/ref/contrib/admin/#inlinemodeladmin-objects
maxwell
Haikson, да, я переделал связь в Generic и иду по второму пути (пишу свой виджет для Админки)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB