导读:本篇文章首席CTO笔记来给大家介绍有关django建表的时候如何对默认值加密的相关内容,希望对大家有所帮助,一起来看看吧。
Django中,如何为ForeignKey设置默认值最科学
需要用一个外键的表的特定一个值来给创建的对象的某个字段设置默认值,想到如下前两种方法,看到后面一种,都感觉不太科学。
# 1:
default_what = What.objects.filter(name=\"default\")
nation = models.ForeignKey(Country, default=\'IT\')
# 2:
DEFAULT_ID = 1
what = models.ForeignKey(Country, default=DEFAULT_ID)
# 3:
class CountryManager(models.Manager):
\"\"\"Enable fixtures using self.sigla instead of `id`\"\"\"
def get_by_natural_key(self, sigla):
return self.get(sigla=sigla)
class Country(models.Model):
objects = CountryManager()
sigla = models.CharField(max_length=5, unique=True)
def __unicode__(self):
return u\'%s\' % self.sigla
class City(models.Model):
nome = models.CharField(max_length=64, unique=True)
nation = models.ForeignKey(Country, default=\'IT\')
form.field[\'some_field_name\'].init = \'===请选择选项===\'
如果我理解错了,请完善一下你的问题。
django models建表设置default=1和blank=True没有效果
提供个思路。没试过,不知道是否可行。
把表的抽象结构定义出一个Model,但记得加上
class Meta:
abstract=True
好了,你得到了一个模型的抽象类。抽象类在syncdb时候不会被建成表。
然后,写一个按照日期动态生成类的东东。比如你的抽象类叫MyModel的话。
def gen_model_by_date(dt=None):
if dt is None:
dt = datetime.datetime.today()
new_model_name = \'MyModel_{d}\'.format(d=dt.strftime(\'%Y%m%d\'))
new_model = type(new_model_name, (MyModel, ), {})
return new_model
然后这张表的所有逻辑里,都用这个方法来代替原model。
django代码相关应该也许这么就搞得定吧。 至于表……写SQL每天定时建表,建表以保证不会出现要用的表还没建好的情况就行了。
django 怎么从数据库读数据,成为表单默认值
最简单的办法是。为数据库的表建立一个model。具体做法是这样子。
1.在settings.py里设置数据库连接方式。连接错误后面都没有办法
2.在models设置一个数据库表的对应数据结构,通常叫关系对象模型,所以叫model,它就是一个类。你可以用django-admin.py ...probe,似乎是这个命令,就是一个数据库的探测命令,可以根据表,自动生成model的代码。当然如果你先写了model的代码就可以用syncdb命令生成数据库的表
3.在urls.py里设置一个URL的path,当浏览器访问这个path时就可以打开对应的view中的函数
4.在view里
4.1 result=modelclass.objects.all()这个命令可以取出所有的记录
4.2 然后你可以直接将结果传递给模板。由模板显示。这是最合理的办法
4.3 在模板里 {% for cols in result %}
4.4 licols.field1/li
大约就是这样子。可能说的太粗。你对着教程看就知道了。
结语:以上就是首席CTO笔记为大家整理的关于django建表的时候如何对默认值加密的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~
以上内容为新媒号(sinv.com.cn)为大家提供!新媒号,坚持更新大家所需的互联网后端知识。希望您喜欢!
版权申明:新媒号所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请发送邮件至 k2#88.com(替换@) 举报,一经查实,本站将立刻删除。