覆盖 Django 模型 __init__ 方法

2024-03-25

我的 Django 项目的 Ingredient 模型有一个IntegerField它声明该原料库存是否按重量、单位或窝数进行管理。

虽然数据库有它的integervalue 我必须显示它的名称。我认为最好覆盖每个成分并设置其值,而不是覆盖__init__Python 类的方法,但我不明白如何实现。

模型.py:

class Ingredient(models.Model):
    def __init__(self):
        super(Ingredient, self).__init__()
        if self.cost_by == 1:
            self.cost_by = 'Units'
        elif self.cost_by == 2:
            self.cost_by = 'Kilograms'
        elif self.cost_by == 3:
            self.cost_by = 'Litters'
#...etc...

到目前为止,我尝试过此操作,但出现以下错误:

__init__() takes 1 positional argument but 0 were given

我应该提供什么论据?


如果你定义choices在包含值到名称映射的字段上,您将获得一个以任何形式呈现的选择字段ModelForm对于该字段,您将获得在模型上生成的方法来获取所选值的显示名称get_<field_name>_display() https://docs.djangoproject.com/en/3.0/ref/models/instances/#django.db.models.Model.get_FOO_display

class Ingredient(models.Model):

    COST_BY_CHOICES = (
        (1, 'Units'),
        (2, 'Kilograms'),
        (3, 'Litters'),
    )

    cost_by = models.IntegerField(choices=COST_BY_CHOICES)

像这样使用

ingredient = Ingredient(cost_by=1)
print(ingredient.get_cost_by_display())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

覆盖 Django 模型 __init__ 方法 的相关文章

随机推荐

  • VBA自动将.Range更改为.range

    我一直在编写一个 Excel 宏来帮助我在工作中处理数据 现在我已经完成了代码的编写 但我不断收到错误 因为 Microsoft Visual Basic 不断将 Range 更改为 range 每当这样做时 我都会收到编译错误 因为该方法
  • 为什么 z 索引不起作用?

    所以如果我理解的话z index正确的是 在这种情况下它会是完美的 我想将底部图像 标签 卡片 放置在其上方的 div 下方 所以你看不到锋利的边缘 我该怎么做呢 z index 1 on the image tag card or z i
  • 发送者和接收者根据请求通过 ssh 传输文件?

    我创建了一个程序 它迭代一堆文件并调用其中的一些文件 scp
  • 如何将字符串的元素放入具有特定行为的列表中

    list1 A B list2 1 1 1 2 1 3 1 4 2 1 2 2 2 3 2 4 我需要我的输出 1 1 1 2 1 3 1 4 2 1 2 2 2 3 2 4 现在如果我知道 子列表 1 的长度 4 sublist2 的长度
  • EF Code First 延迟加载不起作用

    我首先使用 EF6 的代码 但似乎无法让延迟加载工作 预加载工作正常 我有以下课程 public class Merchant User public virtual ICollection
  • D3.js - 具有多个环和动画过渡的甜甜圈图

    如何为下面的多环D3图表添加过渡动画效果 如图所示D3 js 具有多个环的圆环图 https stackoverflow com questions 17507728 d3 js donut charts with multiple rin
  • BlackBerry Simulator 中的图形加速错误

    当我在模拟器上运行任何程序时 它会打开并显示错误 图形加速错误 BlackBerry 9900 Simulator 检测到您当前的图形加速存在问题 设置 具有最新视频的 OpenGL 1 x 兼容显卡 图形加速需要驱动程序 请尝试较低的 通
  • 在 Android 中将原始文件移动到 SD 卡

    我有一个方法可以copy an Audio file from raw folder to SD card 需要两个输入 ressound ogg 音频原始文件 ID fName SD卡中原始文件的文件名 Updated public bo
  • iOS 16 中 List 中的嵌套 ScrollView + 可刷新的奇怪行为

    在我的 SwiftUI 应用程序中 我有一个带有嵌套 ScrollView 的列表 因为我已将 iPhone 更新到 iOS 16 所以主列表上的刷新有一个奇怪的行为 似乎每个ScrollView都有自己的刷新 问题是我在主列表上应用了 r
  • jQuery 从 select 获取值然后更改 div 的 css

    我一直在尝试使用这个例子 但我一生都无法让它发挥作用 从选择中更改 Div 的背景 https stackoverflow com questions 5764413 change background of div from select
  • 属性名称不同时如何指定映射规则

    我是 Automapper 框架的新手 我有一个域类和一个 DTO 类 如下所示 public class Employee public long Id get set public string Name get set public
  • 有没有办法从 vim 一次打开多个文件?

    当从命令行启动 vim 时 我可以这样做vim txt一次打开目录中的所有文本文件 出于某种原因 在 vim 内部尝试相同的操作 e txt 给出错误 E77 Too many file names vim 拒绝一次打开多个有什么原因吗 有
  • 在主查询中的一列中返回多个值

    我试图从表中查找相对信息 并将这些结果 以及其他不相关的结果 作为较大查询的一部分返回到一行中 我已经尝试使用这个示例 并针对我的数据进行了修改 如何在一列中返回多个值 T SQL https stackoverflow com quest
  • 检查 Laravel 中的请求数组是否为空

    我有一个动态生成的表单 它为我提供了一组输入 然而数组可能为空 那么 foreach 将失败 public function myfunction Request request if isset request do something
  • 如何使嵌入式 Elasticsearch 可通过 localhost:9200 访问

    我正在玩spring boot sample data elasticsearch https github com spring projects spring boot tree master spring boot samples s
  • 在 VS 2012 中部署 Visual Studio 插件

    我已经成功创建了 Visual Studio 插件 但是我很困惑如何在另一台计算机上部署这个插件 我已经浏览了 stackoverflow 的答案 但是我对此事没有明确的想法 您只需将 YourAddIn dll 和 YourAddIn A
  • 将函数指针设置为静态地址

    我正在将 DLL 注入另一个进程 并希望根据其地址 0x54315 调用该二进制文件中的函数 我怎样才能真正声明一个函数 然后将其设置到这个地址 define FUNC 0x54315 void myFuncPtr int main myF
  • UI 自动化 - 为另一个应用程序的文本框设置文本

    我有两种形式 当单击其中一个按钮时 我想打开另一个按钮并在其中填充一个文本框 我尝试使用下面的代码 但它给出了一个错误 指出 不支持的模式 这是我的代码 private void button1 Click object sender Ev
  • 找出长度为 N 的两个字符的所有可能组合

    我有两个角色 例如 a a b b 我需要找到这两个字符的所有可能组合 从而形成长度为 N 的字符串 例如 如果N 3 combinations aab aba baa abb bab bba aaa bbb 某些模块中有此功能吗 iter
  • 覆盖 Django 模型 __init__ 方法

    我的 Django 项目的 Ingredient 模型有一个IntegerField它声明该原料库存是否按重量 单位或窝数进行管理 虽然数据库有它的integervalue 我必须显示它的名称 我认为最好覆盖每个成分并设置其值 而不是覆盖