首页>>后端>>Python->django模型怎么更新数据(2023年最新解答)

django模型怎么更新数据(2023年最新解答)

时间:2023-12-11 本站 点击:0

导读:本篇文章首席CTO笔记来给大家介绍有关django模型怎么更新数据的相关内容,希望对大家有所帮助,一起来看看吧。

Django model update(修改) 修改时间并没有触发的问题

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

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

问题解决:

修改更新有两种方法

1)save

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

2)update

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

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

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

解决:

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

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

django1.8更改了model后要怎样重建数据库

目前到django1.7 为止

修改model的前提是:你已经创建完model,并且已经 使用 syncdb 或 migrate 创建了相应的数据库表。

然后再 修改model,不会对数据库表产生任何修改的。

具体的东西,自己去看 Django 相应版本的文档去吧

不同版本,不太一样。

models.py中增加了字段,django中怎样更新

你的意思是model对字段做了修改,怎么同步到数据库端吧?

django1.7之前是实现不了的,django1.7提供了migration支持表结构同步。

django中user扩展表中数据怎么更新

在models.py 中增加如下扩展user的类:

#==================扩展用户====================================

class UserProfile(models.Model):

user = models.OneToOneField(User)

major = models.TextField(default='', blank=True)

address = models.CharField(max_length=200,default='',blank=True)

def __unicode__(self):

return self.user.username

def create_user_profile(sender, instance, created, **kwargs):

"""Create the UserProfile when a new User is saved"""

if created:

profile = UserProfile()

profile.user = instance

profile.save()

#post_save.connect(create_user_profile, sender=User)

""" 不明白的是,我一定注释掉上面这一行,才不会出错,否则会有Duplicate entry '2' for key 'user_id'") ,看意思是,重复了,但不明白为什么重复,注释掉上面的之后,一切正常,但与官方文档又有差异了,迷惑中"""

#==================扩展用户结束================================12345678910111213141516171819

还需要修改admin.py

"""用户模块扩展"""

class ProfileInline(admin.StackedInline):

model = UserProfile

#fk_name = 'user'

max_num = 1

can_delete = False

class CustomUserAdmin(UserAdmin):

inlines = [ProfileInline,]

admin.site.unregister(User)

admin.site.register(User, CustomUserAdmin)

"""用户模块扩展"""12345678910111213

修改settings.py 的配置,增加

"""用户模块扩展部分"""

AUTH_PROFILE_MODULE = 'djangoadmin.myadmin.UserProfile'

"""用户模块扩展完成"""123

按照官方的解释,这里是app label加上扩展类的名字. 应该也就是创建的app的名字,官方推荐的方式就两个部分用”.”连接起来,我这里有三个部分,也没有报错。

然后运行 python manage.py syncdb ,这是会在数据库中创建响应的表,并且有user_id这个外键字段.

最后,我们来运行一下程序,并进入到增加用户界面中,你会发现,你扩展的字段都显示出来了

每次增加用户,都会在扩展的表中增加相应的数据,修改的时候,也会修改响相应的数据,通过 user_id 来关联,这样就完成了user model的扩展。

如果要获取扩展表中的内容,可以通过 request.user.get_profile().address 这种方式来获取. 得到 User对象后,就能很方便的得到扩展的类.

如何将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数据库怎么增加数据?

有两种方法:1)save通过创建模型类对象,执行对象的save()方法保存到数据库中。 from datetime import date book = BookInfo( btitle=西游记, bpub_date=date(1988,1,1), bread=10, bcomment=10) book.save() hero = HeroInfo( hname=孙悟空, hgender=0, hbook=book) hero.save() hero2 = HeroInfo( hname=猪八戒, hgender=0, hbook_id=book.id) hero2.save()2)create通过模型类.objects.create()保存。 HeroInfo.objects.create( hname=沙悟净, hgender=0, hbook=book)HeroInfo: 沙悟净在黑马程序员社区的技术交流当中,还有删除,改懂,查询的操作全部方法。

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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Python/25180.html