当前位置: 首页 > 知识库问答 >
问题:

创建一个简单的python计算以显示在特定对象记录的管理面板中

左丘昕
2023-03-14

我对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

我想获取用户输入(可以是小数),将英寸转换为英尺,通过乘以长度(ft)x宽度(ft)x深度(ft)计算立方英尺,并存储“字符串”版本以显示对象的尺寸。str(self)应该返回立方码和描述对象尺寸的字符串。

::更新::我已经做到了这一点:

# Create a class to calculate the volume by first converting inches to ft, then to cubic yd

类卷(模型。模型):名称=模型。CharField(max_length=200)linear_ft=模型。DecimalField('长度单位为英尺:',max_digits=200,decimal_places=2,默认=0)depth_in=模型。DecimalField('深度英寸:',max_digits=200,decimal_places=2,默认=0)width_in=模型。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):返回对象cuyd

现在我的问题是这个错误:引用cubic_yd=cubic_ftself.cubic_ft_yd的“decimal.decimal”和“float”的操作数类型不受支持

提前谢谢

共有1个答案

长孙知
2023-03-14

您不应该像这样设置depth_ftwidth_ft。您需要设置self.depth_ft=self.depth_in*12,以便变量实际上注册为实例的成员。

事实上,您根本不应该有那个helper函数。

def get_cu_yd(self):
        depth_ft = self.depth_in * 12
        width_ft = self.width_in * 12
        dims = str(self.linear_ft) + " length x " + str(depth_ft) + " depth x " + str(width_ft) + " width")
        cubic_ft = self.linear_ft * depth_ft * width_ft
        cubic_yd = cubic_ft * 0.037037

        return dims + "cubic yards: " + str(self.dims)
 类似资料:
  • 我对RxJS很陌生,所以如果这个问题已经得到回答,我提前道歉。 我有一个Angular 2应用程序,在其中一个组件中有一个普通对象。我将UI绑定到这个对象。我想做的是能够捕获对这个对象的所有更改,无论它们来自代码还是来自用户更改其中一个字段。 我正在查看可观察对象,但似乎只有通过Emit方法推送新对象时,订阅者才能接收通知。例如,在属性绑定到输入字段的情况下,这将如何工作? 有更好的方法吗? 这是

  • 显示特定的通话记录     可显示指定的通话记录。选择通话记录后按下按钮,并选择选项选单的[依种类排列记录]。 通话记录可从以下项目中选择。 所有通话记录 显示通话记录。 XX件未处理事项 显示前次确认后发生的记录。 没有其他记录时,会显示[暂无任何未处理事项]。 语音消息 显示语音消息。 未接来电 显示未接来电记录。 已接来电 显示已接来电记录。 已拨电话 显示已拨电话记录。 提示 亦可于显示通

  • 对于一个练习,我尝试创建一个登录页面。这是我第一次使用php。我已经看过很多指南,也看过stackoverflow的很多问题。这就是我想到的。(我正在对数据库使用XAMPP) 文件夹php:login。php,会话。欢迎。php,连接。php 文件夹页面:登录。html DB名称:leftoveryouth 表名:客户端 Colums:id、名、姓、出生日期、街道、街道、城市、plz、用户名、电子

  • 我在上一篇文章中尝试了一个答案:DateTimeField不显示在管理系统中 但也许我太愚蠢了,无法理解。 此时未显示已创建的\u的字段。谁能给我指一下正确的方向吗? 模型 管理员 编辑:

  • 我在这上面花了太多的时间,我自己也弄不明白。 我正在编写一些使用一些模块的代码,所以我想为我的消息创建一个特定的日志记录器,而不是其他模块的日志记录器(它们太多了,所以我不想为每个模块设置不同的级别)。 我将我的用例简化为: 当我执行前面的代码时,我希望记录我的信息消息。 结果我得到了: 与相同,它总是打印警告/错误/关键消息,而不是debug/info。 如果我提高了日志记录级别(假设),它会按

  • 本文向大家介绍一个简单的Python名片管理系统,包括了一个简单的Python名片管理系统的使用技巧和注意事项,需要的朋友参考一下 字符串和列表学完,自己试着写了一个非常简单的Python名片管理系统。 新萌尝试,大佬们不要喷。 修改名片的功能我偷了个懒,因为我不知道怎么通过定义下标,然后通过下标来修改列表内的字符串。 我的思路是,把用户准备修改的名片删除,再把用户新命名的名片添加即可; 如果有大