Я не уверен, что это возможно даже без изменения интерфейса администратора.Django: обновить значение поля на основе других полей
У меня есть модель под названием «Цитата», которая может содержать несколько моделей «Продукт». Я соединяю их с помощью промежуточной модели «QuoteIncludes». Вот три модели, поскольку они в настоящее время стоят:
class Product(models.Model):
name = models.CharField(max_length=100)
short_desc = models.CharField(max_length=200)
default_cost = models.DecimalField(max_digits=15, decimal_places=2)
default_price = models.DecimalField(max_digits=15, decimal_places=2)
shipping_per_unit = models.DecimalField(max_digits=9, decimal_places=2)
weight_in_lbs = models.DecimalField(max_digits=5, decimal_places=2)
def __unicode__(self):
return self.name
class Quote(models.Model):
## Human name for easy reference
name = models.CharField(max_length=100)
items = models.ManyToManyField(Product, through='QuoteIncludes')
def __unicode__(self):
return self.name
class QuoteIncludes(models.Model):
## Attach foreign keys between a Quote and Product
product = models.ForeignKey(Product)
quote = models.ForeignKey(Quote)
## Additional fields when adding product to a Quote
quantity = models.PositiveIntegerField()
per_unit_cost = models.DecimalField(max_digits=15, decimal_places=2)
per_unit_price = models.DecimalField(max_digits=15, decimal_places=2)
def _get_extended_price(self):
"""Gets extended price by multiplying quantity and unit price."""
if self.quantity and self.per_unit_price:
return self.quantity * self.per_unit_price
else:
return 0.00
extended_price = _get_extended_price
То, что я хотел бы быть в состоянии сделать, это создать Quote в интерфейсе администратора, так что когда я заполнил как количества, так и per_unit_price из позиции, она заполняет «extended_price» как произведение двух, когда я перехожу на вкладку. Я думаю, что это требует добавления AJAX.
Независимо от того, какое решение вы используете, будьте осторожны с безопасностью, если вы не хотите, чтобы пользователи могли отправлять произвольные значения с их собственными ценами. – user27478
Ну, это представление будет для «цитирования» списка продуктов, поэтому умышленно, чтобы человек, редактировавший это число, смог при необходимости скорректировать их. Спасибо, что указали на это. – akoumjian