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

发布于 2024-09-28 19:11:29 字数 656 浏览 0 评论 0原文

我想创建一个 Django 管理操作,允许我创建记录的副本。

这是用例。

管理员单击应用程序中想要复制的记录旁边的复选框。 管理员从管理操作下拉菜单中选择“复制”。 管理员点击“开始”。 Django 管理员使用新 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"

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

I want to create a Django Admin Action that allows me to create a duplicate of a record.

Heres the use case.

Admin clicks the checkbox next to a record in an app that they want to duplicate.
Admin selects "Duplicate" from the admin action drop down menu.
Admin clicks go.
Django admin creates a duplicate record with a new id.
Page is refrshed and new duplicate is added with id.
Admin clicks on the new, duplicated record, and edits it.
Admin clicks save.

Am I crazy or is this a pretty straight forward Admin Action?

I've been using these docs for reference: http://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/

I'm thinking something like this:

In my app:

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

I know that's not right... but is my thinking close?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不必了 2024-10-05 19:11:29

您的想法是正确的,但您需要迭代查询集,然后复制每个对象。

def duplicate_event(modeladmin, request, queryset):
    for object in queryset:
        object.id = None
        object.save()
duplicate_event.short_description = "Duplicate selected record"

You have the right idea but you need to iterate through the queryset then duplicate each object.

def duplicate_event(modeladmin, request, queryset):
    for object in queryset:
        object.id = None
        object.save()
duplicate_event.short_description = "Duplicate selected record"
停滞 2024-10-05 19:11:29

也许这对你有用。

def duplicate_query_sets(queryset, **kwargs):
    for p in queryset:
        p.pk = None
        for i, v in kwargs.iteritems():
            setattr(p, i, v)

        p.save()

Maybe this work to for you.

def duplicate_query_sets(queryset, **kwargs):
    for p in queryset:
        p.pk = None
        for i, v in kwargs.iteritems():
            setattr(p, i, v)

        p.save()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文