简介:今天,首席执行官注意到与您分享Django模型常数如何调用设置的相关内容。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!
使用Python提供的JSON软件包在Django模型的定义中为Tojson添加了一种方法。使用django模型访问_meta.fields获取相关属性。示例如下::
1
2
3
4
5
6
7
8
9
10
11
12
类别类别(Models.Model):
autoid = model.autofield(primary_key = true)
电子邮件= models.charfield(max_length = 150,空白= false)
comtype = models.charfield(max_length = 20,空白= false)
catName = models.charfield(max_length = 150,空白= false)
def __unicode __(self):
返回'%s'%(self.catname)
def tojson(self):
导入JSON
然后使用Django查找数据并将其转换为JSON。代码如下:
1
2
行= models.category.objects.get(autoid = 23)
打印行。
直接从django模型字段引用:field.null如果为true,django存储空气值null在数据库中。默认值为false。
应该注意的是,空字符串值将始终存储为一个空字符串,而不是null.null.null =对于非弦字段(例如Integer,boolean and Date和date)。对于这两种类型的字段,您还需要设置空白= true。如果要允许空值表单,null仅影响数据库存储(请参阅空白)。无基于字符串的字段
codego.net,例如charfield和textfield,除非您有充分的理由。有两个可能的值“无数据”;
django的练习是空字符串,而不是null.field.blank如果为true。默认值为false。
请注意,这比其他null更好。纯度与数据库纯粹是相关的,并且已验证空白。如果字段空白= true,请验证它将允许在django管理站点上允许空值。如果字段空白=字段=false,此字段是必要的。Field.default默认字段。该字段可以是一个值或可呼叫的对象。如果被调用,它将在每次调用时创建一个新对象。
你不明白这一切吗?
从文档中:如果null为真,则Django将空值null存储在数据库中。
默认值为false。如果空白为true,则允许该字段为空白。默认值为false。默认字段是默认字段。
您的“默认”设置将在此字段中使用。您的代码不应清楚地将其设置为一个值的值。
使用“空白”表单验证用途blank = true设置允许的字段以设置为空值
如果要在db中存储一个空值,则使用“ null”,通常是首选。将空白值设置为空字符串,或(如果适用)给定字段0。
null =
无空白=“” default =“”“可能是因为它得到。Blank表示不
无效但有价值,这意味着“空”是数据类型。它可能是字符串中的一个空字符串。对于数字,可能是0。
假设有这样的词典a = {'id':'123'}
然后,如果您获得了MyModel的对象,则可以使用这种方式
mymodel.objects.get(** a)
获取此对象的ID,mymodel.objects.get(** a).id。
只要字典的键是mymodel中的一个字段。
Django模型对快速方法使用多语言支持。此方法通过创建自定义模板标签来实现多语言显示的目的来选择模型中的重复语言字段。
假设我们有这样的模型。PY,并且某个模型包含多个重复字段。每个重复字段都用于保留其相应的显示语言:
类myobject(models.model):
name = models.charfield(max_length = 50)
title_en = models.charfield(max_length = 50)
title_es = models.charfield(max_length = 100)
title_fr = models.charfield(max_length = 100)
description_en = models.charfield(max_length = 100)
description_es = models.charfield(max_length = 100)
Description_fr = Models.Charfield(max_length = 100)
类myotherobject(models.model):
name = models.charfield(max_length = 50)
content_en = models.charfield(max_length = 200)
content_es = model.charfield(max_length = 200)
content_fr = model.charfield(max_length = 200)
请注意,我们将线条和语言代码作为相应字段背后的后缀,将用作语言搜索标记。
然后,我们添加了一个需要在settings.py中翻译的字段名称:
translation_fields =('title','description','content')
将TemplateTags目录添加到项目目录(不要忘记任何家庭__init__.py),并构建lazy_tags.py:
从django导入模板
从设置导入translation_fields
寄存器= template.library()
类局部content(template.node):
def __init __(self,model,landaging_code):
self.model =模型
self.lang = language_code
def渲染(自我,上下文):
模型= template.Resolve_variable(self.model,context)
lang = template.resolve_variable(self.lang,context)
对于translation_fields中的f:
尝试:
setAttr(型号,F,getAttr(型号,'%s_%s'%(f,lang)))
除了attributeError:
经过
返回 '??'
@register.tag(name ='get_localized_content')
def get_lot_localized_content(解析器,令牌):
bits = list(token.split_contents())
如果Len(位)!= 3:
rish template.templatesyntaxerror(“'get_localized_content'标签完全取2个参数”)
返回局部content(model = bits [1],language_code = bits [2])
为了在模板中使用自定义标签,我们首先加载:
{%加载lazy_tags%}
然后使用自定义标签,传递对象和语言代码,然后进行翻译。例如,西班牙语:
{%get_localized_content对象'es'%}
目前,如果没有语言代码可以通过,则不能使用obj.descript来调用某个语言字段。因此,我们与django.core.context_processors.request合作,上下文处理器::
template_context_processors =(
Em
'django.core.context_processors.request',
治愈
我们可以在模板中使用它:
{%get_localized_content oppect.language_code%}
结论:以上是首席CTO注释为每个人编制Django模型的所有内容。不要忘记找到常数的相关内容。