django 拷贝一个 model 实例

今天做一个拷贝功能,把某个 obj 拷贝并修改部分数据,提交表单后保存为一个新实例。
结果google 出来的结果不对,都是相互copy 的代码,大概如下:

1 obj = MyModel.objects.get(id=1)
2 obj.pk = None
3 obj.save()

后来好不容易找到一个正确的,特此记录:

1 if request.method == "POST":
2     form = AuthorCopyForm(request.POST,instance=author)
3     if form.is_valid():
4         new_author = form.save(commit=False)
5         new_author.pk = None
6         new_author.id = None
7         new_author.save()

参考:http://blog.elsdoerfer.name/2008/09/09/making-a-copy-of-a-model-instance/

时间: 2024-10-12 12:49:43

django 拷贝一个 model 实例的相关文章

django (三) 第一个django app 创建model

经过上一章,我们已经创建好一个django app了,接下来,我们开始完善它. 首先,我们先了解些基本概念. Django中创建的每个应用程序都是由Python的包组成,遵循某些约定.Django配有一个实用程序,自动生成一个应用程序的基本目录结构,所以您可以专注于编写代码,而不是创建目录. 那么项目和应用程序到底有什么区别呢? 一个app是一个web应用:比如一个博客系统,一个简单的投票系统.而一个项目是一个集合的配置和应用程序特定的Web站点.一个项目可以包含多个应用程序.应用程序可以存在于

django学习之Model(二)

继续(一)的内容: 1-跨文件的Models 在文件头部import进来,然后用ForeignKey关联上: from django.db import models from geography.models import ZipCode class Restaurant(models.Model): # ... zip_code = models.ForeignKey(ZipCode) 2-field名字的约束 1)-不能是Python预留字 2)-不能有连续的2个下划线,例如foo__ba

django学习之Model(四)MakingQuery

上一篇写到MakingQuey中的filter,本篇接着来. 10)-扩展多值的关系 如果对一个ManyToManyField或ForeignKey的表进行filter过滤查询的话,有2中方法可以用.分别是: #1 Blog.objects.filter(entry__headline__contains='Lennon', entry__pub_date__year=2008) #2 Blog.objects.filter(entry__headline__contains='Lennon')

django学习之Model(五)MakingQuery

接着上篇. 10-一次更新多个对象 有时想要对QuerySet中的所有对象的某一个field来设定一个值,这时候可以像下边这样用update(): # Update all the headlines with pub_date in 2007. Entry.objects.filter(pub_date__year=2007).update(headline='Everything is the same') 这样使用的update()只能是没有关联关系的model或者有ForeignKey的

Django中的Model继承

Django 中的 model 继承和 Python 中的类继承非常相似,只不过你要选择具体的实现方式:让父 model 拥有独立的数据库:还是让父 model 只包含基本的公共信息,而这些信息只能由子 model 呈现. Django中有三种继承关系: 1.通常,你只是想用父 model 来保存那些你不想在子 model 中重复录入的信息.父类是不使用的也就是不生成单独的数据表,这种情况下使用抽象基类继承 Abstract base classes. 2.如果你想从现有的Model继承并让每个

django学习之Model(三)QuerySet

接下来主要学习Models中的Making queries 写好models.py后,django会自动提供一个数据库的抽象API,来实现CRUD(create, retrieve, update, delete).这一部分主要就是怎样去用这些API.在data model reference会有全部的讲解. 接下来都会反复用到下边这个例子,或者在这段代码上进行扩展: from django.db import models class Blog(models.Model): name = mo

利用django创建一个投票网站(五)

创建你的第一个 Django 项目, 第五部分 这一篇从第四部分(en)结尾的地方继续讲起.我们在前几章成功的构建了一个在线投票应用,在这一部分里我们将其创建一些自动化测试. 自动化测试简介 自动化测试是什么? 测试,是用来检查代码正确性的一些简单的程序. 测试在不同的层次中都存在.有些测试只关注某个很小的细节(某个模型的某个方法的返回值是否满足预期?),而另一些测试可能检查对莫个软件的一系列操作(某一用户输入序列是否造成了预期的结果?).其实这和我们在教程的第一部分(zh)里做的并没有什么不同

Django 模型系统(model)&ORM--基础

ORM 映射关系: 类 ---> 表 属性 ---> 字段 对象 --->一条数据 创建表(建立模型) 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对一的关系(one-to-one) 出版商模型:出版商有名称,所在城市以及email. 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系

Django - 模型(model)-- ORM

一.ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中. ORM在业务逻辑层和数据库层之间充当了桥梁的作用 ORM由来 让我们从O/R开始.字母O起源于"对象"(Object),而R则来自于"关系"(Relational). 几乎所有的软件开发过程中都