让我们克隆一个包含多到多个字段的django模型实例

django-cloneable的Python项目详细描述


Django可克隆

pypi-badgebuild-status

django cloneable提供具有^{tt2}的CloneableMixin类$ 方法。它可以混合到任何django模型中。

必须对已保存的实例(一个 已设置pk。然后它返回模型的一个新实例,该实例包含 与原始实例相同的字段值,但它将是一个单独的数据库 具有不同主键的行。

例如:

fromdjango.dbimportmodelsfromdjango_cloneableimportCloneableMixinclassIngredient(CloneableMixin,models.Model):name=models.CharField(max_length=50)is_spicy=models.BooleanField(default=False)classPizza(CloneableMixin,models.Model):name=models.CharField(max_length=50)price=models.IntegerField()ingredients=models.ManyToManyField(Ingredient)tomatos=Ingredient.objects.create(name='Tomato',is_spicy=False)cheese=Ingredient.objects.create(name='Cheese',is_spicy=False)chili=Ingredient.objects.create(name='Chili',is_spicy=True)margarita=Pizza.objects.create(name='Margarita')margarita.ingredients.add(tomatos)margarita.ingredients.add(cheese)diabolo=margarita.clone(attrs={'name':'Diabolo'})diabolo.ingerdients.add(chili)# Nothing has changed on the original instance.assertmargarita.name=='Margarita'assertmargarita.ingredients.all()==[tomatos,cheese]# The original m2m values were copied, and the new values were added.assertdiabolo.name=='Diabolo'assertdiabolo.ingredients.all()==[tomatos,cheese,chili]

如示例所示,您可以提供应替换的attrs。 在克隆的对象中。这样就可以在克隆的实例获得 保存的。默认情况下,克隆将保存到数据库中,以便 pk返回时。

有很多关于如何修改克隆逻辑的钩子。最好的方法 了解它们就是看看 CloneableMixin

发展

使用以下命令安装依赖项(包括测试依赖项):

pip install -r requirements.txt

然后您可以使用以下命令运行所有测试:

tox

更改日志

0.1.0

  • 初次发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
CentOS上的java Spring Boot简易应用程序需要很长时间才能启动   java如何检查字符串值是否等于null?   收集器中的java映射值。分组方式()   java需要支持Azure AD B2C webapp集成   java如何加入线程以停止它?   java如何使用意图传递类的对象?   java如何在战争环境中发现CDI生产者?   多模块项目中java奇怪的编译器行为   java如何在web应用程序中管理密码?   java从http服务器、filehandler中删除冗余代码   java使用反射来获取泛型类的字段   java Spring MVC/Hibernate/MySQL 400错误请求错误   给定正整数a的java幂为3   在Java中将元素拆分为不同数量的列表?   java展开折叠窗格