Skip to content

Instantly share code, notes, and snippets.

@artschwagerb
Created July 15, 2015 16:37
Show Gist options
  • Save artschwagerb/7703525af730f3349348 to your computer and use it in GitHub Desktop.
Save artschwagerb/7703525af730f3349348 to your computer and use it in GitHub Desktop.
Duplicate Django Object - Admin Action
from django.contrib import admin
#other imports removed
def copy_course(modeladmin, request, queryset):
import copy
for course in queryset:
# multiple could be selected
course_copy = copy.copy(course) # django copy object
course_copy.id = None # set 'id' to None to create new object
# Clear out values
course_copy.building = None
course_copy.room = None
course_copy.template = False
course_copy.template_course = course
course_copy.signup_count = 0
course_copy.attendance_count = 0
course_copy.credit = False
course_copy.cancelled = False
course_copy.deleted = False
course_copy.processed = False
course_copy.processed_date = None
course_copy.approved = False
course_copy.approved_user = None
course_copy.approved_notes = None
course_copy.user_created = Person.objects.get(django_user=request.user)
course_copy.date_start = None
course_copy.date_end = None
course_copy.save() # initial save
# copy M2M relationship: prerequisites
for prerequisite in course.prerequisite_courses.all():
course_copy.prerequisite_courses.add(prerequisite)
course_copy.save() # (7) save the copy
copy_course.short_description = "Duplicate Course"
# Register your models here.
class CourseAdmin(admin.ModelAdmin):
actions = [copy_course]
admin.site.register(Course,CourseAdmin)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment