更改 Django 中的表名称

2024-07-04

我读过 Django 中的表名可以使用自定义元选项 https://docs.djangoproject.com/en/dev/ref/models/options/。我想知道如何使用 db_table 选项来继续使用应用程序名称,但稍微修改模型名称而不对应用程序名称进行硬编码。

例如,在 Django 教程中,应用程序名称为“polls”,模型名称为“poll”。假设我希望该表被称为“polls_mypoll”而不是“polls_poll”。这是我尝试过的,但无法访问外部类(未定义 Poll)

class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    class Meta:
        db_table = "%s_%s" % (Poll._meta.app_label, "mypoll")

同样,如果我想显式定义 db_table 作为默认 polls_poll 该怎么办?我知道我可以完全放弃类 Meta 并使用默认名称,但如果我想明确说明它怎么办?

class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    class Meta:
        db_table = "%s_%s" % (Poll._meta.app_label, Poll._meta.model_name)

这也是行不通的,因为 Poll 没有在 Meta 中定义。


你得到的异常,Poll is not defined,是由你造成的db_table = "%s_%s" % (Poll._meta.app_label, Poll._meta.model_name)声明引用Poll类仍在构造中(尚未插入全局范围)。如果您想使用参考Poll in the db_table,考虑编写您自己的继承自的元类模型库 https://github.com/django/django/blob/master/django/db/models/base.py#L54,并设置_meta.db_table正确地估价。那时,Poll名称将不可用,但实际的对象将被构造并由您来操作。

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

更改 Django 中的表名称 的相关文章

  • 将今天日期设置为模型中的默认值

    如何在模型中将默认值设置为今天日期 我的型号 vote date models DateField 投票日期 null False Blank False 所有答案都不能解决最初的问题 重述问题 如何将日期字段的默认值设置为今天的日期并仍然
  • 使用 df['Time'] = pd.to_datetime(phData['Time'], format='%H:%M:%S') 后,从 1900-01-01 开始的日期被添加到我的“时间”中

    我是一名自学的程序员 大约一年了 所以很新 这是我的数据 phData pd read excel phone call log duration xlsx called from called to Date Time Duration
  • 如何在 Visual Studio 2017 中更新 Django

    我正在尝试设置 Visual Studio 2017 进行 Django 开发 但 Django 1 9 版本很旧 如何将其更新到最新版本 gt 2 0 使用建议的安装创建 Django Web 项目 为您的环境命名 选择 Python环境
  • Flask:如何从模板目录下提供静态文件?

    我使用 Flask 并想要更改我的资产文件夹目录 这是我的文件夹结构 python static js img font css templates default css js img venv app py 我想移动静态文件夹下的所有文
  • 如何使用Python读取MP3中的ID3标签? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有人有在 MP3 文件或 WMA 文件中读写 ID3 标签的经验吗 有一些库 但我想从头开始 深入Python https web a
  • Django - 旋转图像并保存

    我想在 django 中为图像添加 向左旋转 和 向右旋转 按钮 这似乎很容易 但我浪费了一些时间 尝试了在 stackoverflow 上找到的一些解决方案 但还没有结果 我的模型有一个 FileField class MyModel m
  • 通过key查询模型

    我想做的是查询数据存储中的模型 其中密钥是not我已经拥有的对象的密钥 这是一些代码 class User db Model partner db SelfReferenceProperty def text message self ms
  • Python将html ascii编码文本转换为utf8

    我有一个 xml 文件 需要将其转换为 utf8 不幸的是 这些实体包含这样的文本 047 mytext 044 我正在使用编解码器库将文件转换为 utf8 但 html 实体无法使用它 有没有一种简单的方法可以摆脱html编码 Thank
  • 如何覆盖 nltk 的 pos_tag 分配给文本的 POS 标签?

    我使用 nltk 中的 pos tag 来标记一组 未标记的 技术文档中的文本并获得良好的结果 但它总是将 authenticated 等单词标记为动词 而有时它可以用作形容词 换句话说 仅仅改变标签并不是每次都有效 是否有一个好方法来覆盖
  • 模板内嵌套 for 循环

    模型 py class Task models Model level models ForeignKey Level on delete models CASCADE todo models ForeignKey ToDo on dele
  • 删除超过 7 天的文件

    我看过一些帖子删除特定文件夹中的所有文件 不是文件夹 但我根本不明白它们 我需要使用 UNC 路径并删除所有超过 7 天的文件 Mypath files data APIArchiveFolder 有人有快速脚本 可以专门输入上面的路径来删
  • 数据集继续使用线性回归而不是决策树模型

    我想在我的数据集上使用决策树模型 但无论我做什么 它都会继续使用线性回归 数据不同 但图表仍然相同 基本上 我编写了线性回归的代码 from sklearn linear model import LinearRegression linr
  • 为唯一字段显示 Django 错误消息

    我想更改当重复条目尝试保存时的默认错误消息 而它们应该是唯一的 即unique True 很像这样 email models EmailField unique True error messages unique This email h
  • 为什么 Python 中的元组不可变? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么 python 字符串和元组是不可变的 https stackoverflow com questions 1538663 why are python strings and tuples a
  • Django 会话竞争条件?

    摘要 Django 会话中是否存在竞争条件 如何防止它 我在 Django 会话方面遇到了一个有趣的问题 我认为该问题涉及由于同一用户同时发出请求而导致的竞争条件 它发生在一个同时上传多个文件的脚本中 正在本地主机上进行测试 我认为这使得同
  • 为什么 SendMessage 对某些应用程序不起作用?

    背景 我试图编写一个自动点击器来在后台点击应用程序 Roblox https en wikipedia org wiki Roblox 不尝试做任何恶意的事情 我能够获取该窗口并执行诸如关闭它之类的命令 但是 当尝试将点击发送到窗口时 它会
  • 如何让机器人加入语音频道discord.py

    我正在使用 Discord py 创建音乐机器人 但我在将该机器人连接到语音通道时遇到问题 我使用 Cog 将音乐功能与其他功能分开 commands command async def join voice self ctx channe
  • 如何编写一个 SQLAlchemy 查询来返回图中节点的所有后代?

    我正在开发一个应用程序 其中我的数据库对象通常有多个父级和多个子级 并且希望创建一个 SQLAlchemy 查询来返回对象的所有后代 意识到我基本上是在尝试将图形存储在 SQL 数据库中 我发现设置一个自引用多对多模式 http docs
  • Python 与 Hive 的连接

    我安装了 Hortonworks Hive ODBC 驱动程序并在数据源中创建了连接 我测试了它并且成功了 我安装了PyODBC并编写了以下代码 import os sys pyodbc con pyodbc connect DSN MyC
  • Python Selenium Webdriver - 代理身份验证

    我想将 Selenium Webdriver 与需要用户身份验证的代理一起使用 这可能吗 这就是我到目前为止所拥有的 但我不知道在哪里放置凭据 user pass proxy port from selenium import webdri

随机推荐