相关疑难解决方法(0)

在Django/Algorithm中复制模型实例及其相关对象,以便重新复制对象

我有模特Books,ChaptersPages.它们都是由User:

from django.db import models

class Book(models.Model)
    author = models.ForeignKey('auth.User')

class Chapter(models.Model)
    author = models.ForeignKey('auth.User')
    book = models.ForeignKey(Book)

class Page(models.Model)
    author = models.ForeignKey('auth.User')
    book = models.ForeignKey(Book)
    chapter = models.ForeignKey(Chapter)
Run Code Online (Sandbox Code Playgroud)

我想做的是复制现有的Book并将其更新User给其他人.皱纹是我也想复制所有相关模型实例的Book-它所有的ChaptersPages以及!

当看到a时,事情变得非常棘手Page- 不仅新的Pages需要author更新他们的领域,而且他们还需要指向新的Chapter对象!

Django是否支持开箱即用的方式?复制模型的通用算法会是什么样的?

干杯,

约翰


更新:

上面给出的类只是一个例子来说明我遇到的问题!

python django django-models duplicates

35
推荐指数
5
解决办法
3万
查看次数

Django"另存为新"并保留图像字段

我有一个带有多个ImageFields的Django模型.

在我设置的ModelAdmin类中save_as = True,这意味着管理页面有一个"另存为新"按钮,该按钮允许复制现有项目并将其另存为新项目.

但是,使用此按钮时,ImageFields不会重复,并且在新项目上保留为空白.

查看POST请求,我发现这些字段在发布数据中是空白的.

我已经考虑过覆盖Model类的save方法,并自己复制旧对象中的图像.但据我所知,我没办法告诉对象是"新的".我似乎也没有旧项目的ID,所以我无法从中获取旧图像.

有没有办法让这些图像字段重复?

编辑: 按请求添加示例代码.

仅使用一个模型创建了一个简约的应用程序.验证问题仍然存在.

models.py示例:

from django.db import models

class Person(models.Model):
    face_image = models.ImageField(upload_to='images', 
                                   null=False, 
                                   blank=True)
Run Code Online (Sandbox Code Playgroud)

示例admin.py:

from django.contrib import admin
from testapp.models import Person

class PersonAdmin(admin.ModelAdmin):
    save_as = True

admin.site.register(Person, PersonAdmin)
Run Code Online (Sandbox Code Playgroud)

django

7
推荐指数
2
解决办法
4417
查看次数

创建Django管理操作以复制记录

我想创建一个允许我创建记录副本的Django Admin Action.

继承人的用例.

管理员单击要复制的应用中记录旁边的复选框.管理员从管理操作下拉菜单中选择"重复".管理员点击进入.Django admin使用新的id创建重复记录.页面被刷新,新的重复与id一起添加.管理员点击新的重复记录并对其进行编辑.管理员点击保存.

我疯了还是这是一个非常直接的管理行动?

我一直在使用这些文档作为参考:http://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/

我在想这样的事情:

在我的应用程序:

def duplicate(modeladmin, request, queryset):
    new = obj.id
    queryset.create(new)
    return None
duplicate.short_description = "Duplicate selected record"
Run Code Online (Sandbox Code Playgroud)

我知道那不对......但是我的想法很接近吗?

django django-admin

4
推荐指数
1
解决办法
6702
查看次数

标签 统计

django ×3

django-admin ×1

django-models ×1

duplicates ×1

python ×1