如何获取 Django 模型中字段的默认值?

     2023-02-24     74

关键词:

【中文标题】如何获取 Django 模型中字段的默认值?【英文标题】:How do I get the default value for a field in a Django model? 【发布时间】:2010-11-21 10:55:01 【问题描述】:

我有一个 Django 模型,其中一些字段指定了默认值。我希望稍后在我的代码中为我们获取这些字段之一的默认值。有没有一种简单的方法可以从模型中获取特定字段的默认值?

【问题讨论】:

【参考方案1】:
TheModel._meta.get_field('the_field').get_default()

【讨论】:

这是最好的答案。 .get_default() 更可靠,而 .default 并不总是返回默认值(例如,它可能是 NOT_PROVIDED)。【参考方案2】:

从 Django 1.9.x 开始,您可以使用:

field = TheModel._meta.get_field('field_name')
default_value = field.get_default()

【讨论】:

【参考方案3】:

你可以这样获取字段:

myfield = MyModel._meta.get_field_by_name('field_name')

而默认只是字段的一个属性:

myfield.default

【讨论】:

现在get_field_by_name 方法返回一个以字段对象作为其第一项的元组。 field.default 可能是可调用的。应该使用 get_default() 投反对票,因为这目前已过时。 投了反对票,因为它目前已过时。应该做 TheModel._meta.get_field('the_field').get_default() .default 并不总是返回默认值(例如,它可能是 NOT_PROVIDED)。 .get_default() 更可靠。【参考方案4】:

如果你不想明确写出字段名,你也可以这样做: MyModel._meta.get_field(MyModel.field.field_name).default

【讨论】:

【参考方案5】:

如果您需要多个字段的默认值(例如,在某种重新初始化步骤中),只需实例化模型的新临时对象并使用该对象中的字段值可能是值得的。

temp_obj = MyModel()
obj.field_1 = temp_obj.field_1 if cond_1 else 'foo'
...
obj.field_n = temp_obj.field_n if cond_n else 'bar'

当然,如果可以在没有进一步性能/依赖性问题的情况下构造临时对象,这只是值得的。

【讨论】:

如何强制 Django 模型中的 2 个字段共享相同的默认值?

】如何强制Django模型中的2个字段共享相同的默认值?【英文标题】:HowcanIforce2fieldsinaDjangomodeltosharethesamedefaultvalue?【发布时间】:2016-06-1304:59:24【问题描述】:我有一个Django模型MyModel,如下所示。它有两个DateTimeField类型的字段... 查看详情

如何从模板标签中的模型对象中获取 django 模型字段值

】如何从模板标签中的模型对象中获取django模型字段值【英文标题】:Howtogetdjangomodelsfieldvaluefrommodelobjectintemplatetags【发布时间】:2011-10-0709:20:53【问题描述】:Models.py:classDiscussion(models.Model):version=models.TextField(blank=True)team=model... 查看详情

Django模型继承层次结构中字段的基于类的默认值

...itancehierarchy【发布时间】:2011-04-1618:20:42【问题描述】:如何在以下方案中实现基于类的默认值?我的意思是,我想继承类为“数字”设置不同的默认值:classOrderDocumentBase(PdfPrintable):number=model 查看详情

Django 模型中字段的默认值

】Django模型中字段的默认值【英文标题】:DefaultvalueforfieldinDjangomodel【发布时间】:2010-10-1920:14:39【问题描述】:假设我有一个模型:classSomeModel(models.Model):id=models.AutoField(primary_key=True)a=models.CharField(max_length=10)b=models.CharField(max_l 查看详情

如何从用户在 django 基本模板中创建的所有帖子中获取模型字段值的总和?

】如何从用户在django基本模板中创建的所有帖子中获取模型字段值的总和?【英文标题】:Howtogetthesumofamodelfieldvaluefromallthepostsausercreatedindjangobasetemplate?【发布时间】:2020-10-2514:05:04【问题描述】:我有一个auth_user模型和一个post... 查看详情

如何将 Django 模型字段的默认值设置为函数调用/可调用(例如,相对于模型对象创建时间的日期)

】如何将Django模型字段的默认值设置为函数调用/可调用(例如,相对于模型对象创建时间的日期)【英文标题】:HowtosetaDjangomodelfield\'sdefaultvaluetoafunctioncall/callable(e.g.,adaterelativetothetimeofmodelobjectcreation)【发布时间】:2012-09-2021:4... 查看详情

从 Django QuerySet 中获取所有值以及来自相关模型的其他字段

】从DjangoQuerySet中获取所有值以及来自相关模型的其他字段【英文标题】:GetallvaluesfromDjangoQuerySetplusadditionalfieldsfromarelatedmodel【发布时间】:2019-03-1105:21:39【问题描述】:我想知道是否有捷径可以从Django模型中获取所有字段,并... 查看详情

如何从 django 的模型中获取一个字段

】如何从django的模型中获取一个字段【英文标题】:Howtogetonefieldfrommodelindjango【发布时间】:2015-05-3112:15:59【问题描述】:我的django应用程序中有这样一个模型。我只想绘制这个模型的一个字段并将它们放在视图中。我下面的解... 查看详情

如何根据Django中相同模型的其他字段ID过滤字段值

】如何根据Django中相同模型的其他字段ID过滤字段值【英文标题】:howtofilterfieldvaluesbasedonotherfieldidofsamemodelinDjango【发布时间】:2021-11-0315:23:48【问题描述】:这里我要过滤每个组的所有项目让我们将我的模型视为classItemsList(mode... 查看详情

Django 模型字段可调用默认值不起作用

】Django模型字段可调用默认值不起作用【英文标题】:DjangoModelFieldCallableDefaultNotWorking【发布时间】:2018-10-2022:02:06【问题描述】:Django的可调用模型字段默认值已损坏。当我将模型字段默认设置为可调用对象(请参阅下面的迁... 查看详情

如何从列表中的 django 模型中获取选择字段?

】如何从列表中的django模型中获取选择字段?【英文标题】:Howtogetchoicesfieldfromdjangomodelsinalist?【发布时间】:2021-09-1822:06:32【问题描述】:我有一个具有选择字段的模型。我想获取列表中的选项。请帮助我实现这一目标OPTIONS=((... 查看详情

如何在需要的基本 Django 用户模型中获取电子邮件字段?

】如何在需要的基本Django用户模型中获取电子邮件字段?【英文标题】:HowcanIgettheemailfieldinthebasicDjangoUsermodeltoberequired?【发布时间】:2012-05-0303:30:47【问题描述】:我试图强制用户在注册时输入他们的电子邮件。我了解如何将... 查看详情

使用 Django,如何在模板中动态设置 ModelForm 字段值?

】使用Django,如何在模板中动态设置ModelForm字段值?【英文标题】:UsingDjango,howdoIsetaModelFormfieldvaluedynamicallyinthetemplate?【发布时间】:2021-01-2722:31:43【问题描述】:我正在尝试利用复选框字段为用户选择的收藏夹创建模型实例。... 查看详情

如何使用 django 向默认 auth_user 模型添加额外的模型字段

】如何使用django向默认auth_user模型添加额外的模型字段【英文标题】:Howcaniaddextramodelfieldstodefaultauth_usermodelusingdjango【发布时间】:2018-10-2114:31:09【问题描述】:我是Django新手。我需要在我的用户模型(数据库中的auth_user表)中... 查看详情

如何使用格式化的日期时间字段获取 django 查询集结果

】如何使用格式化的日期时间字段获取django查询集结果【英文标题】:Howtogetdjangoquerysetresultswithformatteddatetimefield【发布时间】:2016-11-2822:38:44【问题描述】:我的Django模型具有与其他模型关联的外键。每个模型都有相同的字段... 查看详情

具有使用数据库默认值的自定义字段的 Django 模型

】具有使用数据库默认值的自定义字段的Django模型【英文标题】:Djangomodelwithacustomfieldthatusesadatabasedefault【发布时间】:2016-03-2318:37:10【问题描述】:我正在尝试实现IntegerField的子类以在我的Postgres数据库上使用默认方法,而不... 查看详情

为啥我不能使用模型方法作为默认值?无论如何,Python/Django 模型中的 self 是啥?

】为啥我不能使用模型方法作为默认值?无论如何,Python/Django模型中的self是啥?【英文标题】:Whycan\'tIusemodelmethodsasdefaults?WhatisselfinPython/Djangomodelsanyway?为什么我不能使用模型方法作为默认值?无论如何,Python/Django模型中的self... 查看详情

如何在 Django Admin 中更改 OneToOne 模型字段默认消息?

】如何在DjangoAdmin中更改OneToOne模型字段默认消息?【英文标题】:HowtoChangeOneToOnemodelFieldDefaultMessageinDjangoAdmin?【发布时间】:2021-05-3120:49:54【问题描述】:我假设有以下模型。classReplied(BaseModel):reply=models.OneToOneField(Review,on_delete=... 查看详情