在线工具 在线编程 在线白板 在线工具 在线编程 在线白板

django怎么改model(2023年最新分享)

兄弟在线求帮请讲解下,django怎么改model(2023年最新分享)
最新回答
孤独的王后°

2024-09-20 01:11:55

导读:很多朋友问到关于django怎么改model的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!

Djangomodelupdate(修改)修改时间并没有触发的问题

我们都知道django里面模型设计一般会有常用的两个字段创建时间和修改时间,这两个字段的定义是这样的:

一般来说,你对这个表的数据有修改的时候,修改时间会随之变动,但是我遇到一个情况,是即使你修改了这条数据的内容,但是修改时间并没有变动。

问题解决:

修改更新有两种方法

1)save

修改模型类对象的属性,然后执行save()方法

2)update

使用模型类.objects.filter().update(),会返回受影响的行数

第一种修改更新的方法是会触发updated=models.DateTimeField(auto_now=True,verbose_name="更新时间")字段的更新时间的,第二种不会触发。

所以如果你更新的数据没有触发更新时间,检查是否用了第二种方法,换成第一种修改的方式就可以了。

解决:

如果要用update这种方法修改多条数据,触发更新时间的字段,可以这样做:

加一条修改数据,把修改时间这个字段修改成当前时间就可以了。

django中model的主键的设置与自增

在django所定义的model里是可以自己设置主键的,具体方法为

但是要注意的是,为了添加元素的过程中主键的自增,主键的设置中不能加入default属性,否则save()的过程将不再是新建元素而是替换元素。

自己在最开始的定义是

AgentInfo_id=models.IntegerField(default=0)

由于设置了默认值,引发了不小的麻烦

django里面怎么控制一个model只有root用户能创建和修改

目前到django1.7为止修改model的前提是:你已经创建完model,并且已经使用syncdb或migrate创建了相应的数据库表。然后再修改model,不会对数据库表产生任何修改的。具体的东西,自己去看Django相应版本的文档去吧不同版本,不太一样。

如何实现Django动态修改model字段定义属性

Django可以获取一个model里字段定义的属性:

User._meta.get_field_by_name('username')

返回的是tuple,所以没法修改

数据库中有一数据表table_a,且该表没有主键也无唯一键,有一列row1数据都是不同的(没有唯一键),对应的django中的model为:

classTableA(models.Model):

row1=models.CharField(primary_key=True,max_length=36)

row2=models.CharField(max_length=36)

row3=models.CharField(max_length=36)

classMeta:

db_table=u'table_a'

django中对应的model设置row1为主键,一切正常

如果row1有重复数据,model在过滤的时候去重,使用model一切正常

objs=TableA.objects.filter(Q('取出row1中的重复项'))

如果要操作那些重复项(只有row1中的数据是重复的),但这些重复项中row2和row3的数据都是不同的

如果能动态设置model字段属性就都解决了

当然直接用sql也可以

结语:以上就是首席CTO笔记为大家介绍的关于django怎么改model的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。