Я довольно новичок в python и работаю над новым проектом django и хочу отобразить расчеты в административной панели для определенных записей, используя данные записей.Это также будет воспроизведено в пользовательском интерфейсе (который еще не создан).
Я изучил основы хранения и управления переменными для других вычислений, выполненных из базового пользовательского ввода.Это немного отличается от того, как это делается в панели администратора.Я использую PyCharm, но PyCharm говорит мне, что есть ошибки.Я также использовал ссылку здесь, чтобы посмотреть, смогу ли я заставить это работать:
https://www.reddit.com/r/django/comments/6xigr3/how_to_show_calculated_field_in_django_admin/
Я понимаю, что приведенный ниже код неверен, но я также не уверен, ссылаюсь ли яправильные переменные для доступа к ним из основной функции?
Как меняется определение этой функции при использовании в панели администратора и пользовательском интерфейсе?
Спасибо за любую помощь по любым вопросамвыше!
# Create a class to calculate the volume by first converting inches to ft, then to cubic yd
class Volume(models.Model):
linear_ft = models.DecimalField('Length in feet: ', max_digits=200, decimal_places=2)
depth_in = models.DecimalField('Depth in inches: ', max_digits=200, decimal_places=2)
width_in = models.DecimalField('Width in inches: ', max_digits=200, decimal_places=2)
# Convert inches to feet, store variables for use in future functions
def in_to_ft(self):
depth_ft = self.depth_in * 12
width_ft = self.width_in * 12
# Call to get cubic yards which uses variables from previous functions
def get_cu_yd(self):
dims = str(self.linear_ft) + " length x " + str(self.depth_ft) + " depth x " + str(self.width_ft) + " width")
cubic_ft = self.linear_ft * self.depth_ft * self.width_ft
cubic_yd = cubic_ft * 0.037037
return cubic_yd + "cubic yards: " + str(self.dims)
# Register the function to the property method
obj_cu_yd = property(get_cu_yd)
def __str__(self):
return obj_cu_yd
Я хотел бы взять пользовательский ввод (может быть десятичным числом), преобразовать дюймы в футы, вычислить кубические футы, умножив длину (футы) х ширину (футы) х глубину(футы) и сохраните «строковую» версию для отображения размеров объекта. str (self) должен вернуть кубические ярды и строку, описывающую размеры объекта.
:: UPDATE :: Я получил это далеко:
# Create a class to calculate the volume by first converting inches to ft, then to cubic yd
Класс Volume (models.Model): name = models.CharField (max_length = 200) linear_ft = models.DecimalField ('Длина в футах:', max_digits = 200, decimal_places = 2, по умолчанию = 0) Глубина_in = models.DecimalField ('Глубина в дюймах: ', max_digits = 200, decimal_places = 2, по умолчанию = 0) width_in = models.DecimalField (' Ширина в дюймах: ', max_digits = 200, decimal_places = 2, по умолчанию = 0)
# Create empty variables so not to divide/multiply by nonzero
cubic_ft = 0
cubic_yd = 0
# Set conversion rate from ft to yards
cubic_ft_yd = 0.037037
# Call to get cubic yards
def get_cu_yd(self):
depth_ft = decimal.Decimal(self.depth_in) * 12
width_ft = decimal.Decimal(self.width_in) * 12
dims = str(self.linear_ft) + " length x " + str(depth_ft) + " depth x " + str(width_ft) + " width"
cubic_ft = decimal.Decimal(self.linear_ft)*depth_ft*width_ft
cubic_yd = cubic_ft*self.cubic_ft_yd
return str(self.name) + " - " + str(cubic_yd) + "cubic yards: " + dims
# Register the function to the property method
obj_cu_yd = property(get_cu_yd)
def str (self): return obj_cu_yd
Теперь моя проблема заключается в этой ошибке: неподдерживаемые типы операндов для : 'decimal.Decimal' и 'float' inссылка на cubic_yd = cubic_ft self.cubic_ft_yd
Заранее спасибо