问题标签 [django-model-field]

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 投票
1 回答
1739 浏览

python - 在 django 中定义自定义模型字段的覆盖方法

我一直在尝试在 python 中定义自定义 django 模型字段。我在以下位置引用了 django 文档https://docs.djangoproject.com/en/1.10/howto/custom-model-fields/。但是,我对以下方法感到困惑(根据我的理解,我已将其分为几组):-

第 1 组(根据文档,该组中的方法相互关联)

  1. __init__()
  2. 解构()

第 2 组

  1. db_type()
  2. rel_db_type()
  3. get_internal_type()

第 3 组

  1. from_db_value()
  2. to_python()
  3. get_prep_value()
  4. get_db_prep_value()
  5. get_db_prep_save()
  6. value_from_object()
  7. value_to_string()

第 4 组

  1. 表单域

我有以下问题:-

  1. 什么时候deconstruct()使用?文档说,它在迁移期间很有用,但没有明确解释。此外,它什么时候被调用?

  2. db_type()和之间的区别get_internal_type()

  3. get_prep_value()和之间的区别get_db_prep_value()
  4. value_from_object()和之间的区别value_to_string()value_from_object()文档中没有给出。
  5. 两者from_db_value(),value_to_string()to_python()从字符串中给出 python 对象。那么,为什么存在这些不同的方法?

我知道,我问了一个有点冗长的问题。但是找不到任何其他方法来更好地提出这个问题。

提前致谢。

0 投票
1 回答
244 浏览

python - 将 ForeignKey 与 ManyToMany 字段交换时出现异常

将 ForeignKey 关系更改为 ManyToMany 关系后出现以下错误。更新方法是否适用于多对多?

无法更新模型字段(仅允许非关系和外键)。

现在,当尝试保存modelStudent模型时,这发生在管理部分。这是我更改为字段的模型ManytoMany

展品 A:

现在这就是我在管理部分 (admin.py) 中的内容。基本上,此表单的目的是允许用户在管理界面中将多个学生分配给 modelPatient。我仍然想要该功能

展品 B:

然后这是注册的接口

展品 C:

然后我将模型注册为:

简而言之,为什么我会出错

无法更新模型字段(仅允许非关系和外键)。

在我的管理应用程序中,当我尝试保存模型时,因为我已经更改了ForeignKey关系ManyToMany。关于如何解决这个问题的任何建议?

0 投票
0 回答
632 浏览

django - django 表单“排除”有效,“字段”无效

这个问题似乎太麻烦了,所以如果我没有提供足够的细节,我很抱歉。我在这个项目中使用了很多不同的东西,所以要提供所有这些细节需要我半天时间。如果有特定的东西可以帮助您定位解决方案,请询问。

我有一个带有复杂管道的表单集视图。在我的表单视图中,我使用来自django extra views的ModelFormsetView。我想错误一定在某个代码中,但是如果我查看他们的代码,它在每一步都有“排除”和“字段”,并且永远不会遗漏一个。

代替

它总是包括“创建”和“修改”。如果我确实排除,它总是有效的。django 文档说使用“字段”而不是“排除”。

我知道在这样的管道中还有很多其他变量,但是由于将其从字段更改为排除可以解决它,因此表单一定有问题。

另外我应该提到分配是一个称为类别的多态模型的子类,所以这就是我必须处理“category_ptr”的原因。

根据要求,我正在发布表单代码。

0 投票
2 回答
1916 浏览

python - 当数据库中已存在数据时如何减少 Django 中 CharField 的 max_length

我在 Django (1.9) 模型上有一个 CharField:

该应用程序正在使用并且已经有数据,并且已经有对象使用了全部 50 个字符。当我尝试迁移时,在不从生产数据库中收到投诉的情况下,减少此字段的 max_length 的最简单方法是什么?如果它有所作为,DB 就是 postgresql。

0 投票
1 回答
3406 浏览

python - Django:在models.py中出错并迁移,试图修复错误但django在models.py中没有看到任何变化

所以我在models.py中犯了以下愚蠢的错误:

当我运行“makemigrations”和“migrate”时,这给了我以下错误

所以我通过将我的 models.py 行更改为来修复我的错误

但这又给了我同样的 django.core.exceptions.ValidationError。就像我的 models.py 没有更新一样。即使我删除了 models.py 中的行,也会出现错误。

有人知道如何解决这个问题吗?

0 投票
1 回答
1121 浏览

python - 使用 null=False 保存空字段时不会引发异常 - Django

我有以下模型:

并使用 Django shell 来保存一个未定义 refer_code 的用户实例:

这没有引发异常。我的理解是 null=False 需要设置referral_code - 不是这样吗?我将如何实现这种行为?

更新

我注意到该字段设置为u.referral_code='',因此考虑到唯一性约束,当我尝试使用新实例重复该过程时,这引发了异常。我宁愿抛出异常,因为我没有设置字段......

0 投票
1 回答
147 浏览

python - django-models - 非字符串类型存储到 CharField

我在 Python 3 和 MySQL 5.7 上使用 Django 1.11。

假设我有一个带有 CharField 的模型,如下所示:

在外壳中,我尝试这样做:

这给了我一个 TypeError: __str__ returned non-string (type dict)

但是当我这样做时:

我没有收到任何错误。

如果我尝试:

但是当我尝试时:

这意味着它作为字符串存储在数据库表中。

我的问题是为什么会发生这种隐式转换,为什么 save() 不会像 __str__() 那样引发错误?

谢谢你的帮助!

0 投票
0 回答
111 浏览

django - Django 字段的自定义 __eq__() 函数

我需要一个CharField带有自定义__eq__函数的函数,这样当我运行model_class.objects.filter(id=something)而不是只检查两个字符串的相等性时,我的自定义__eq__函数应该运行。__eq__或者除了创建自定义函数之外,还有其他方法可以实现相同的相等性检查。

[编辑] 我的自定义__eq__函数涉及将字符串切割成不同的部分并以不同的方式评估每个部分。我的观点是,它没有等效的 SQL 语句。

0 投票
0 回答
345 浏览

django - 使用可调用作为 Django FilePathField 的路径属性?

我有以下模型,其中包括用户上传的文件。

然后,我想允许用户在以后的表单中选择他们上传的文件之一。因此,我需要能够动态设置包含该用户文件的目录的路径,类似于我在原始模型中设置 upload_path 的动态方式。

我根据此链接尝试了以下操作:

但是,查看 Django 3.0 中 FilePathField 的文档,它看起来并不需要对 path 属性进行调用。所以,我不确定上述链接中的答案如何回答我的问题。实现此功能的最佳方法是什么?

我想做如下的事情:

问题是我不知道如何在这段代码中正确引用模型实例(所以实例未定义)。我查看了 FileField 代码,试图看看他们是如何在那里做的,但我无法理解它。

0 投票
1 回答
65 浏览

django - 保存包含引用到 Postgresql 数据库表中另一个模型的 ForeignKey 字段的 ModelForm

以下是我的模型

这是我为注册模型创建的 ModelForm

当我在我的模板上运行上面的 RegistrationForm 时,我得到以下窗口

注册模型表格的图像

研讨会字段,在注册模型中定义为ForeignKey,在研讨会模型中指的是seminarID。研讨会出现在预先填充的注册表单中,这很好,但它显示为研讨会对象(2),研讨会对象(3)......研讨会模型中的研讨会ID也是AutoField和Primarykey。

当我保存 RegistrationForm 时,我的 postgresql 数据库不会使用新值和选定的研讨会对象 (*) 进行更新。请指教

这些链接中提供了研讨会表和注册表快照: 研讨会表图像和注册表的图像