Доброго времени суток!
Не судите строго, т.к. джанго, да и питон я начал изучать не более трех недель назад. Сейчас пытаюсь ,в качестве обучения,оптимизировать выдачу абонементов и учет занятий в студии. Подскажите, пожалуйста,:
- Как можно рассчитать итоговую цену со скидкой и записать ее в таблицу «Paiments» в поле «finish_price»? При этом данные взять из таблицы «Price», которая является внешним ключом для поля «price_of_paiment»
- Можно ли использовать «choices=» для подставления данных о скидке или лучше сделать отдельную таблицу с этими данными,т.к. данные в кортеже не будут числовыми?
На просторах интернета нашел использование функции «def get_sale(self):» которую подставил в рассчет абонемента, но так и не понял ,как туда попадут данный из поля «whole_price» для расчета и как потом записать получившийся результат в поле «finish_price».
Стоит ли дедать первичным ключем поле «whole_price», т.к. планируется не более 5 записей, и можно ли будет получить из нее данные для вычислений в таблице «Price»?
class Price(models.Model):
name_paiment = models.CharField('Название абонемента', max_length=20, unique=True)
whole_price = models.IntegerField('Цена', default=0, )
price_for_one_time = models.IntegerField('Цена за 1 посещение',)
number_of_visits = models.IntegerField('Количество посещений')
def __str__(self):
return '%s %s' % (self.name_paiment, self.whole_price)
class Paiments(models.Model):
DISCOUNT = (
('0', 'нет скидки'),
('5', '5%'),
('10', '10%'),
('15', '15%'),
('20', '20%'),
('25', '25%'),
('30', '30%'),
)
paiment_of_student = models.ForeignKey(Student)
price_of_paiment = models.ForeignKey(Priсe, verbose_name='Название абонемента')
discount = models.IntegerField('Скидка в процентах', blank=True, default=0, choices=DISCOUNT) #ругается на значения, которые выбираешь.
begin_date = models.DateTimeField('Дата начала', default=timezone.now)
end_date = models.DateTimeField('Дата окончания')
finish_price = models.IntegerField(get_sale()) #пишет,что имя не определено.
def get_sale(self):
'''Расчитать стоимость со скидкой'''
end_price = int(self.price_of_paiment * (100 - self.discount) / 100)
return end_price
Прошу прощения ,если где-то не правильно выразил мысль. Подскажите,как реализовать мои идеи, по возможности с кодом, т.к. просто на словах не пойму из-за неопытности.