问题标签 [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.
python - 在 django 中定义自定义模型字段的覆盖方法
我一直在尝试在 python 中定义自定义 django 模型字段。我在以下位置引用了 django 文档https://docs.djangoproject.com/en/1.10/howto/custom-model-fields/。但是,我对以下方法感到困惑(根据我的理解,我已将其分为几组):-
第 1 组(根据文档,该组中的方法相互关联)
__init__
()- 解构()
第 2 组
- db_type()
- rel_db_type()
- get_internal_type()
第 3 组
- from_db_value()
- to_python()
- get_prep_value()
- get_db_prep_value()
- get_db_prep_save()
- value_from_object()
- value_to_string()
第 4 组
- 表单域
我有以下问题:-
什么时候
deconstruct()
使用?文档说,它在迁移期间很有用,但没有明确解释。此外,它什么时候被调用?db_type()
和之间的区别get_internal_type()
get_prep_value()
和之间的区别get_db_prep_value()
value_from_object()
和之间的区别value_to_string()
。value_from_object()
文档中没有给出。- 两者
from_db_value()
,value_to_string()
并to_python()
从字符串中给出 python 对象。那么,为什么存在这些不同的方法?
我知道,我问了一个有点冗长的问题。但是找不到任何其他方法来更好地提出这个问题。
提前致谢。
python - 将 ForeignKey 与 ManyToMany 字段交换时出现异常
将 ForeignKey 关系更改为 ManyToMany 关系后出现以下错误。更新方法是否适用于多对多?
无法更新模型字段(仅允许非关系和外键)。
现在,当尝试保存modelStudent
模型时,这发生在管理部分。这是我更改为字段的模型ManytoMany
展品 A:
现在这就是我在管理部分 (admin.py) 中的内容。基本上,此表单的目的是允许用户在管理界面中将多个学生分配给 modelPatient。我仍然想要该功能
展品 B:
然后这是注册的接口
展品 C:
然后我将模型注册为:
简而言之,为什么我会出错
无法更新模型字段(仅允许非关系和外键)。
在我的管理应用程序中,当我尝试保存模型时,因为我已经更改了ForeignKey
关系ManyToMany
。关于如何解决这个问题的任何建议?
django - django 表单“排除”有效,“字段”无效
这个问题似乎太麻烦了,所以如果我没有提供足够的细节,我很抱歉。我在这个项目中使用了很多不同的东西,所以要提供所有这些细节需要我半天时间。如果有特定的东西可以帮助您定位解决方案,请询问。
我有一个带有复杂管道的表单集视图。在我的表单视图中,我使用来自django extra views的ModelFormsetView。我想错误一定在某个代码中,但是如果我查看他们的代码,它在每一步都有“排除”和“字段”,并且永远不会遗漏一个。
代替
它总是包括“创建”和“修改”。如果我确实排除,它总是有效的。django 文档说使用“字段”而不是“排除”。
我知道在这样的管道中还有很多其他变量,但是由于将其从字段更改为排除可以解决它,因此表单一定有问题。
另外我应该提到分配是一个称为类别的多态模型的子类,所以这就是我必须处理“category_ptr”的原因。
根据要求,我正在发布表单代码。
python - 当数据库中已存在数据时如何减少 Django 中 CharField 的 max_length
我在 Django (1.9) 模型上有一个 CharField:
该应用程序正在使用并且已经有数据,并且已经有对象使用了全部 50 个字符。当我尝试迁移时,在不从生产数据库中收到投诉的情况下,减少此字段的 max_length 的最简单方法是什么?如果它有所作为,DB 就是 postgresql。
python - Django:在models.py中出错并迁移,试图修复错误但django在models.py中没有看到任何变化
所以我在models.py中犯了以下愚蠢的错误:
当我运行“makemigrations”和“migrate”时,这给了我以下错误
所以我通过将我的 models.py 行更改为来修复我的错误
但这又给了我同样的 django.core.exceptions.ValidationError。就像我的 models.py 没有更新一样。即使我删除了 models.py 中的行,也会出现错误。
有人知道如何解决这个问题吗?
python - 使用 null=False 保存空字段时不会引发异常 - Django
我有以下模型:
并使用 Django shell 来保存一个未定义 refer_code 的用户实例:
这没有引发异常。我的理解是 null=False 需要设置referral_code - 不是这样吗?我将如何实现这种行为?
更新
我注意到该字段设置为u.referral_code=''
,因此考虑到唯一性约束,当我尝试使用新实例重复该过程时,这引发了异常。我宁愿抛出异常,因为我没有设置字段......
python - django-models - 非字符串类型存储到 CharField
我在 Python 3 和 MySQL 5.7 上使用 Django 1.11。
假设我有一个带有 CharField 的模型,如下所示:
在外壳中,我尝试这样做:
这给了我一个 TypeError: __str__ returned non-string (type dict)
但是当我这样做时:
我没有收到任何错误。
如果我尝试:
但是当我尝试时:
这意味着它作为字符串存储在数据库表中。
我的问题是为什么会发生这种隐式转换,为什么 save() 不会像 __str__() 那样引发错误?
谢谢你的帮助!
django - Django 字段的自定义 __eq__() 函数
我需要一个CharField
带有自定义__eq__
函数的函数,这样当我运行model_class.objects.filter(id=something)
而不是只检查两个字符串的相等性时,我的自定义__eq__
函数应该运行。__eq__
或者除了创建自定义函数之外,还有其他方法可以实现相同的相等性检查。
[编辑] 我的自定义__eq__
函数涉及将字符串切割成不同的部分并以不同的方式评估每个部分。我的观点是,它没有等效的 SQL 语句。
django - 使用可调用作为 Django FilePathField 的路径属性?
我有以下模型,其中包括用户上传的文件。
然后,我想允许用户在以后的表单中选择他们上传的文件之一。因此,我需要能够动态设置包含该用户文件的目录的路径,类似于我在原始模型中设置 upload_path 的动态方式。
我根据此链接尝试了以下操作:
但是,查看 Django 3.0 中 FilePathField 的文档,它看起来并不需要对 path 属性进行调用。所以,我不确定上述链接中的答案如何回答我的问题。实现此功能的最佳方法是什么?
我想做如下的事情:
问题是我不知道如何在这段代码中正确引用模型实例(所以实例未定义)。我查看了 FileField 代码,试图看看他们是如何在那里做的,但我无法理解它。
django - 保存包含引用到 Postgresql 数据库表中另一个模型的 ForeignKey 字段的 ModelForm
以下是我的模型
这是我为注册模型创建的 ModelForm
当我在我的模板上运行上面的 RegistrationForm 时,我得到以下窗口
研讨会字段,在注册模型中定义为ForeignKey,在研讨会模型中指的是seminarID。研讨会出现在预先填充的注册表单中,这很好,但它显示为研讨会对象(2),研讨会对象(3)......研讨会模型中的研讨会ID也是AutoField和Primarykey。
当我保存 RegistrationForm 时,我的 postgresql 数据库不会使用新值和选定的研讨会对象 (*) 进行更新。请指教