简介:本文的首席执行官注释将介绍有关Django模型如何更新数据的相关内容。我希望这对每个人都会有所帮助。让我们来看看。
我们都知道,Django中的模型设计通常具有两个常用的现场创建时间和修改时间。这两个字段的定义是:
一般而言,当您修改此表的数据时,修改时间将会更改,但是我遇到的情况即使您修改了此数据的内容,修改时间也没有更改。
问题解决了:
有两种修改和更新的方法
1)保存
修改模型类对象的属性,然后执行save()方法
2)更新
使用模型类.objects.filter()。更新(),将返回受影响的行的数量
修改和更新的第一种方法是触发更新时间更新时间的更新时间。
因此,如果您更新的数据不会触发更新时间,请检查第二种方法是否用于替换第一个修改方法。
解决:
如果要使用更新方法修改多个数据并触发更新时间的剪辑,则可以执行此操作:
添加修改数据,并将修改时间字段修改为当前时间。
目前到Django1.7
修改模型的前提是您已经创建了模型,并使用SynCDB或迁移创建了相应的数据库表。
然后修改模型,该模型不会修改为数据库表。
对于特定的事情,请自己查看Django的相应版本。
不同的版本不相同。
您的意思是修改了字段。如何同步到数据库端?
django1.7之前无法实现。Django1.7提供迁移支持表结构同步。
将用户类的以下扩展添加到Models.py:
#=========================================================================================
班级用户版(Models.Model):
user = models.onetoonefield(用户)
major = model.textfield(default ='',空白= true)
地址= model.charfield(max_length = 200,默认值='',空白= true)
def __unicode __(self):
返回self.user.username
def create_user_profile(发件人,实例,创建,** kwargs):
“”保存新用户时创建用户封装。
如果创建:
profile = userProfile()
propile.user =实例
profile.save()
#post_save.connect(create_user_profile,sender =用户)
”“”“我不明白,我必须对上线发表评论,以便没有错误,否则将有重复的条目'2'对于键'user_id'”)。是正常的,但与官方文件有差异。混乱,“”“”
#============================================================================= 123456789111113141516171819
您还需要修改Admin.py
““用户模块扩展”“”“”“”
class profileinline(admin.stackedinline):
型号=用户撰写
#fk_name ='用户'
max_num = 1
can_delete = false
类Customuseradmin(UserAdmin):
inlines = [profileinline,],]
admin.Site.unregister(用户)
Admin.Site.Register(用户,CustomuserAdmin)
“”““用户模块扩展”“” 12345678910111213
修改设置的配置.py,增加
“”“用户模块扩展零件”“”“”“”
auth_profile_module ='djangoadmin.myadmin.userprofile'
“”“用户模块扩展完成”“ 123
根据官方说明,这是应用标签和扩展类的名称。它也应该是创建的应用程序的名称。正式推荐的方法分为“两部分”。连接,我在这里有三个部分,没有错误。
然后运行python manage.py syncdb,它将在数据库中创建一个响应表,并且有一个User_ID外键字段。
最后,让我们运行程序并输入用户界面的增加。您会发现您扩展的字段已显示
每次添加用户时,相应的数据都会添加到扩展表中。修改时,还将修改相应的数据。USER_ID是关联的,因此用户模型扩展已完成。
如果要在扩展程序中获取内容,则可以通过request.user.get_profile()的方法获取它。地址。获得用户对象后,您可以轻松获得扩展类。
如果您有一个名为MyApp的应用程序,则模型型。Py代码如下:
来自django.db导入模型
班级人(Models.Model):
first_name = models.charfield(max_length = 30)
last_name = models.charfield(max_length = 30)
Django数据库迁移通常是两个命令,命令行执行
1.生成数据表
python manage.py迁移
等效地执行以下SQL语句
创建表myapp_person(
“ ID”服务器不是零主键,
“ first_name” varchar(30)不为null,
“ last_name” varchar(30)不是null
);
2.修改Model Model.py字段后,您可以使用重建命令。我们在模型中添加了一个字段
来自django.db导入模型
班级人(Models.Model):
first_name = models.charfield(max_length = 30)
last_name = models.charfield(max_length = 30)
doday = model.datefield(“生日”,默认= dateTime.date.today)
然后在命令行中执行
python manage.py makemigrations
最后执行命令python manage.py runserver,在本地浏览器中打开127.0.0.1:8000
有两种方法:1)通过创建模型类对象保存在数据库中,并且将执行对象的save()方法保存到数据库中。从dateTime导入日期book = bookinfo(btitle = the West the the the the West,bpub_date = date(1988,1,1),面包= 10,bcomment = 10)book.save()海洛因福(hname = sun wukong = sun wukong,hgender = 0,hbookk = bookk = book = book sero.save()here.save()herio2 = heeryinfo(hname = hname = hname = hname =猪八个戒律,hgender = 0,hbook_id = book.id)here.2.save()2)创建通过型号class .objects.create().heroinfo.objects.creats.creats.create(hname = sha wujing,hgender = 0,hgender = 0,hgender = 0,HBook = Book)Heleinfo:Sha Wujing在《黑马程序员社区》中的技术交流,所有方法都可以删除,理解和查询。
结论:以上是首席执行官注明给所有人的Django模型的全部内容。我希望这对每个人都会有所帮助。如果您想了解有关此信息的更多信息,请记住收集并关注此网站。