Есть модель
ТРАНЗАКЦИИ с полями
"позиция, наименование, цена, количество, сумма" и модель
ДОКУМЕНТЫ с полями
"тип документа, название документа, контрагент, тип цен и т.д."
В admin.py
ТРАНЗАКЦИИ настроено как admin.TabularInline для
ДОКУМЕНТЫclass transactions_inline_admin(admin.TabularInline):
model = transactions_ref
form = transactions_form
fields = ('position', 'product_name', 'price_value', 'quantity_value', 'total_sum',)
readonly_fields = ('position',)
ordering = ['position']
save_on_top = True
class transactions_admin(ImportExportModelAdmin):
form = transactions_form
list_display = ('doc_name', 'position', 'product_name', 'price_value', 'quantity_value', 'total_sum',)
list_display_links = ('product_name',)
search_fields = ('doc_name', 'product_name',)
list_filter = ('doc_name', 'product_name',)
save_on_top = True
actions = [docs_price_percent_update, docs_price_natural_update]
docs_price_percent_update.short_description = 'Змінити ціну на, %%'
docs_price_natural_update.short_description = 'Змінити ціну на, у.о.'
class documents_admin(ImportExportModelAdmin):
inlines = [transactions_inline_admin,]
list_display = ('doc_type', 'doc_name', 'doc_creation_date', 'total_sum',)
list_display_links = ('doc_name',)
search_fields = ('=doc_name',)
list_filter = ('doc_type', 'doc_creation_date',)
save_on_top = True
actions = [docs_sum_update, docs_default_state_return]
# admin.site.disable_action('delete_selected')
admin.site.register(documents_ref, documents_admin)
admin.site.register(transactions_ref, transactions_admin)
Как реализовать автозаполнение поля
"цена" в зависимости от выбранного значения поля
"тип цен" (в таблице с товаром к каждой позиции привязано три типа цены: закупка/опт./розница, так вот одно из этих значений нужно подставить/вытянуть из БД) + после указания значения в поле
"количество" подсчитать общую суму по позиции на лету,
до нажатия кнопки Save/Сохранить (сейчас подсчет суммы ведется после нажатия кнопки Save)
@receiver(pre_save, sender=transactions_ref)
def some_position_count_sum(sender, **kwargs):
kwargs['instance'].total_sum = decimal.Decimal(kwargs['instance'].price_value) * decimal.Decimal(kwargs['instance'].quantity_value)
P.S. буду рад любым советам или хотя бы указаниям векторов поиска