导读:今天首席CTO笔记来给各位分享关于django模型怎么调用设定的常数的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
django distinct 返回的数据怎么调用
直接利用python提供的json包,在django model的定义中增加一个方法toJSON,利用django model 能访问 _meta.fields 得到相关属性而得到,例子如下:
1
2
3
4
5
6
7
8
9
10
11
12
class Category(models.Model):
autoid = models.AutoField(primary_key=True)
email=models.CharField(max_length=150,blank=False)
comtype=models.CharField(max_length=20,blank=False)
catname=models.CharField(max_length=150,blank=False)
def __unicode__(self):
return '%s' % (self.catname)
def toJSON(self):
import json
return json.dumps(dict([(attr, getattr(self, attr)) for attr in [f.name for f in self._meta.fields]]))
然后用django查出数据,并转换成json,代码如下:
1
2
row=models.Category.objects.get(autoid=23)
print row.toJSON()
在Django models.py,什么是默认值,空值和空白之间的区别
直接从Django模型字段参考:Field.null如果True,Django存储空值NULL在数据库中。默认值是False。
需要注意的是空字符串值总是会得到存储为空字符串,而不是NULL。null=True对于非字符串字段,如整数,布尔和日期。对于这两种类型的字段,你还需要设置blank=True如果你希望允许空值的表单,为null仅影响数据库存储(见blank)。null关于基于字符串的字段
CodeGo.net,如CharField和TextField除非你有一个很好的理由。如果一个基于字符串的字段null=True,它具有“无数据”两个可能的值:NULL和空字符串。在大多数情况下,它是多余的,以有两个可能的值“没有数据”;
Django的惯例是空字符串,不NULL。Field.blank如果True,该字段允许为空。默认值是False。
注意,这是比不同null。null纯粹是数据库相关的,而blank为验证相关。如果一个字段blank=True,验证在Django管理站点将允许空值条目。如果一个字段blank=False,该领域将是必需的。Field.default默认值的字段。这可以是一个值或一个可调用对象。如果调用它会在每次调用时创建一个新的对象。
难道你不明白这一切?
从文档:null如果为True,Django存储空 值NULL,在数据库中。
默认值为False。blank如果为True,则字段允许 为空白。默认值为False。default为默认值 场。
你“default“设置将用于该领域的问题应该你的代码没有明确将其设置为一个值的值。
使用“blank“表单验证目的-空白=TRUE将允许字段设置为空值
使用“null“如果你想存储一个空值”在DB空“,通常它可是首选,设置空白值设置为空字符串,或(如适用)给定字段0。
Null =
None Blank = "" Default = "" 大概是因为它得到。 空白意味着它是NOT
NULL,而是具有价值,它表示“空”为数据类型,它在一个字符串的情况下,可能是一个空字符串。对于数字可能是0。
django模型,如何动态设置查询的字段?
假设有这样一个字典a={'id':'123'}
那么获取mymodel这个对象的话,可以通过这样的一种方式
mymodel.objects.get(**a)
获取这个对象的id就mymodel.objects.get(**a).id即可
只要字典的key是mymodel中的字段就可以。希望有帮助
django 中template 怎么使用model自定义的方法
django model中使用多语言支持的快速方法, 该方法通过建立自定义的template tag 选取model中重复的语言field来达到多语言显示的目的.
假设我们有这样一个models.py, 某一个model中包含多个重复的field, 每个重复的field都是用来保存其对应的显示语言:
class 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)
class MyOtherObject(models.Model):
name = models.CharField(max_length=50)
content_en = models.CharField(max_length=200)
content_es = models.CharField(max_length=200)
content_fr = models.CharField(max_length=200)
注意, 我们将下划线和语言代码作为后缀放在对应的field后面, 这将作为一个语言的查找标记.
然后我们在settings.py中添加需要翻译的field名:
TRANSLATION_FIELDS = ('title', 'description', 'content')
在项目目录中添加templatetags目录(不要忘了怎家__init__.py), 并在其中建立lazy_tags.py:
from django import template
from settings import TRANSLATION_FIELDS
register = template.Library()
class LocalizedContent(template.Node):
def __init__(self, model, language_code):
self.model = model
self.lang = language_code
def render(self, context):
model = template.resolve_variable(self.model, context)
lang = template.resolve_variable(self.lang, context)
for f in TRANSLATION_FIELDS:
try:
setattr(model, f, getattr(model, '%s_%s' % (f, lang)))
except AttributeError:
pass
return ''
@register.tag(name='get_localized_content')
def get_localized_content(parser, token):
bits = list(token.split_contents())
if len(bits) != 3:
raise template.TemplateSyntaxError("'get_localized_content' tag takes exactly 2 arguments")
return LocalizedContent(model=bits[1], language_code=bits[2])
为了在template中使用自定义的tag, 我们首先载入:
{% load lazy_tags %}
然后使用自定义tag, 传入object和语言代码, 取的翻译. 比如西班牙语:
{% get_localized_content object 'es' %}
此时, 如果没有语言代码传入, 那么无法使用obj.description调用某一个语言field. 所以我们配合django.core.context_processors.request, context processor一起使用:
TEMPLATE_CONTEXT_PROCESSORS = (
...
'django.core.context_processors.request',
)
我们就能在template中这样使用:
{% get_localized_content object request.LANGUAGE_CODE %}
结语:以上就是首席CTO笔记为大家整理的关于django模型怎么调用设定的常数的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于django模型怎么调用设定的常数的相关内容别忘了在本站进行查找喔。