导读:今天首席CTO笔记来给各位分享关于django如何修改数据模型的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
django里面怎么控制一个model只有root用户能创建和修改
目前到django1.7 为止 修改model的前提是:你已经创建完model,并且已经 使用 syncdb 或 migrate 创建了相应的数据库表。 然后再 修改model,不会对数据库表产生任何修改的。 具体的东西,自己去看 Django 相应版本的文档去吧 不同版本,不太一样。
如何将django orm模型 写入数据库
假如你有一个app叫做myapp,模型models.py代码如下:
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
django数据库迁移一般就两个命令,命令行执行
1,生成数据表
python manage.py migrate
相当于执行下面sql语句
CREATE TABLE myapp_person (
"id" serial NOT NULL PRIMARY KEY,
"first_name" varchar(30) NOT NULL,
"last_name" varchar(30) NOT NULL
);
2,修改模型models.py字段后可以用重建命令,我们在模型中添加一个字段
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
bothday= models.DateField("生日", default=datetime.date.today)
然后在命令行执行
python manage.py makemigrations
最后执行命令python manage.py runserver,即可在本地浏览器打开127.0.0.1:8000
Django model update(修改) 修改时间并没有触发的问题
我们都知道 django 里面模型设计 一般会有常用的两个字段 创建时间 和 修改时间,这两个字段的定义是这样的:
一般来说,你对这个表的数据有修改的时候,修改时间会随之变动,但是我遇到一个情况,是即使你修改了这条数据的内容,但是修改时间并没有变动。
问题解决:
修改更新有两种方法
1)save
修改模型类对象的属性,然后执行save()方法
2)update
使用模型类.objects.filter().update(),会返回受影响的行数
第一种修改更新的方法是会触发updated = models.DateTimeField(auto_now=True, verbose_name="更新时间")字段的更新时间的,第二种不会触发。
所以如果你更新的数据没有触发更新时间,检查是否用了第二种方法,换成第一种修改的方式就可以了。
解决:
如果要用 update 这种方法修改多条数据,触发更新时间的字段,可以这样做:
加一条修改数据,把修改时间这个字段修改成当前时间就可以了。
结语:以上就是首席CTO笔记为大家整理的关于django如何修改数据模型的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~