问题标签 [django-models]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
3853 浏览

django - 在 Django 中重命名模型后修复 auth_permission 表

时不时地,您需要在 Django 中重命名模型(或者,在我最近遇到的一个案例中,将一个模型分成两个,使用新的/不同的名称)。(是的,适当的计划有助于避免这种情况)。

在重命名数据库中的相应表并修复受影响的代码后,仍然存在一个问题:授予用户或组对这些模型进行操作的任何权限仍然引用旧模型名称。是否有任何自动化或半自动化的方法来解决这个问题,还是只是手动数据库手术的问题?(在开发中,您可以删除 auth_permissions 表和 syncdb 以重新创建它,但生产并不那么简单)。

0 投票
7 回答
309245 浏览

python - Django 设置默认表单值

我有一个模型如下:

我也有上述模型的模型形式如下:

我想知道如何设置该坦克隐藏字段的默认值。到目前为止,这是我显示/保存表单的功能:

0 投票
4 回答
16236 浏览

django - Django:查询没有主键的只读视图

渲染时遇到异常:(1054,“'字段列表'中的未知列'read_only_view.id ' ”)

我在视图中看不到主键。有解决方法吗?

评论:
我无法控制使用 Django 访问的视图。MySQL 浏览器在那里显示列但没有主键。

0 投票
2 回答
989 浏览

django - 如何从现场添加经理

我想要做的是当某个模型使用我的字段时,它会自动将自定义管理器添加到该模型。

据我所知, contibute_to_class 提供这样的功能

问题是,在我的自定义管理器中,我使用 self.model._default_manager 对默认管理器进行查询,但是当我尝试这样做时,django 说 AttributeError: 'NoneType' object has no attribute '_default_manager'

如果我不使用contribute_to_class 并在我的模型类旁边编写自定义管理器,它会按预期工作。可能是什么问题?

0 投票
2 回答
2507 浏览

django - 如何获取 './manage.py syncdb' 以创建其他视图或运行自定义 SQL?

有没有办法在 syncdb 为模型创建表之后运行一些自定义 SQL 语句?具体来说,我想创建一些数据库视图。

0 投票
4 回答
6204 浏览

python - Django 模型继承。隐藏或删除字段

我想从一些 3rd 方代码继承模型类。我不会使用某些字段,但希望我的客户能够在 Admin 中编辑模型。最好的办法是向管理员隐藏它们,还是我可以从一开始就阻止它们被创建?

此外 - 如果需要其中一个不需要的字段,我该怎么办?我的第一个想法是覆盖 save 方法并输入一个默认值。

0 投票
1 回答
254 浏览

django - 经理每次请求返回一次模型对象(经理在返回一次后丢弃对象)

该行为与下面立即呈现的问题无关。请参阅帖子底部的说明。谢谢。


你好,

我目前遇到的行为是,特定模型的默认管理器在每个请求或每个 shell 会话中只返回一次该模型的对象。下面是在视图中停止的 PDB 记录(但在没有 PDB 的情况下也会发生这种行为):

每当我检索一个对象时,该对象就不再出现在以后的 QuerySet 中。

此行为仅适用于我的一个模型;其他模型似乎查询正确。我认为这与我的模型的定义没有任何关系,基本上是:

抱歉,我的描述有点含糊;我对这种行为是如何出现的感到困惑,不知道下一步该在哪里闲逛。

Manager 为 QuerySet 生成的 SQL 每次都是相同的(并且显然是正确的):

我在 Mac OS 10.5 机器上使用 Django 1.0.2、Python 2.6.1 和与 Python 2.6.1 一起打包的 SQLite。

为了回应其中一条评论,我尝试将related_name参数重命名为entries1entries2避免可能的冲突,但这并没有改变行为。


已解决(我认为)

对不起,这个问题实际上与我提出的问题无关。我在 Entry 的一个信号中有一个粗心的错误:

myapp.__init__

myapp.signals

我的代码的正确版本是:

0 投票
4 回答
2777 浏览

python - Django 标签和翻译 - 模型设计

假设我有以下 Django 模型:

每个标签都有一个 ID 号、标签文本和缩写。现在,我想让这些标签可以翻译成其他语言。做这个的最好方式是什么?

在我看来,我有几个选择:

1:将翻译添加为模型上的字段:

这显然不理想——添加语言需要编辑模型,正确的字段名称取决于语言。

2:添加语言作为外键:

这好多了,现在我可以要求使用某种语言的所有标签,并将它们放入字典中:

但这里的问题是标签 dict 是一个查找表,如下所示:

如果每个标签有一行,这不起作用,一个标签可能有多种语言。为了解决这个问题,我需要另一个字段:

3:将标签文本扔到新模型中:

但这不起作用,并且每次我引用标签的文本时都会导致数据库命中:

我已经实现了选项 2,但我觉得它非常难看 - 我不喜欢 group_id 字段,我想不出更好的名字来命名它。此外,我使用的 StandardLabel 是一个抽象模型,我将其子类化以获得不同字段的不同标签集。

我想如果选项 3 /没有/命中数据库,这就是我会选择的。我相信真正的问题是过滤器text__language=1没有缓存LabelText实例,所以当我点击数据库时text.get(language=1)

您对此有何看法?谁能推荐一个更清洁的解决方案?

编辑:为了清楚起见,这些不是表单标签,所以 Django 国际化系统没有帮助。

0 投票
3 回答
866 浏览

unit-testing - 哪些测试场景对于详尽的黑盒测试重复约会模型是必要且足够的?

我在日历中有一个约会的 django 模型,我正在尝试为其编写一个非常全面的测试驱动程序。定期约会发生在某个时间点,可以无限运行,也可以重复固定次数。该约会反映了可用于 Google 日历约会的功能(可以每月/每年/每周、每两周、每 3 年重复一次。)

我正在尝试提出一个单元测试,它将详尽地测试此实现的基础知识。我正在寻找定义最基本测试的边缘案例。

我有很多基本的,但我正在寻找帮助确定最重要案例的建议:1)创建一个约会 2)创建一个每周重复的约会 3)......每月重复 4)每 2 周重复 5)每 2 个月重复一次 6) 每年重复一次

0 投票
2 回答
2915 浏览

python - 通过 Python/Django 在数据库中表示计划的最佳方式是什么?

我正在用 Python 编写一个带有 Django 前端的备份系统。我决定以一种有点奇怪的方式实现调度——客户端将轮询服务器(每 10 分钟左右),以获取需要执行的备份列表。服务器仅在达到备份时间时才会响应。这是为了保持系统平台独立 - 这样我就不会依赖 cronjobs 或类似的东西。因此,Django 前端(它公开了一个 XML-RPC API)必须将调度存储在数据库中,并解释该调度以决定客户端是否应该开始备份。

目前,时间表使用 3 个字段存储:天、小时和分钟。这些是以逗号分隔的整数列表,表示一周中的天数 (0-6)、一天中的小时数 (0-23) 和一小时中的分钟数 (0-59)。要决定客户端是否应该开始备份是一个非常低效的操作——Python 必须循环从过去 7 天开始的所有天,然后是小时,然后是分钟。我已经做了一些优化以确保它不会循环太多 - 但仍然如此!

这工作相对较好,虽然实现相当丑陋。我遇到的问题是如何通过前端的 HTML 表单显示和解释这些信息。目前我只有大量的多选字段列表,这显然效果不佳。

任何人都可以建议一种不同的方法来实现更有效且更容易以 HTML 表单表示的时间表吗?