문제

관리자 인터페이스에서 기존 목록을 복제하기 위해 기능을 추가하는 쉬운 방법이 있는지 궁금하십니까?

데이터 항목에서 우리는 많은 항목이 다른 항목과 일반 데이터를 공유하고 시간을 절약하기 위해 기존 목록을 신속하게 복제하고 변경된 데이터 만 변경하는 것이 매우 좋을 것입니다. 더 나은 모델 구조를 사용하면 데이터의 복제를 줄이는 한 가지 방법이지만, 중복 된 데이터를 향후 개별적으로 변경 해야하는 상황이있을 수 있습니다.

도움이 되었습니까?

해결책

당신은 할 수 있습니다 다른 이름으로 저장 ModelAdmin에 이것을 추가하는 것만으로도 :

save_as = True

"저장 및 추가"버튼을 "저장 AS"버튼으로 대체합니다. "저장"은 객체가 이전 객체가 아닌 새 객체 (새 ID 포함)로 저장 될 것임을 의미합니다.

다른 팁

여기에는 더 나은 (내장되지 않은) 솔루션이 있습니다.

https://github.com/realgeeks/django-modelclone

그들의 readme에서 :

Django Admin은 a save_as 해당 개체의 새 인스턴스를 저장하기 위해 변경 페이지에 새 버튼을 추가하는 기능.

해당 링크를 클릭하자마자 원래 객체의 동일한 사본을 저장하기 때문에이 기능이 작동하는 방식이 마음에 들지 않습니다. 새 개체에서 원한다면 기존 객체의 복제물로 끝납니다.

반면, Django-Modelclone은 기본적으로 당신을위한 형태를 사전에 제출하는 중간보기를 제공합니다. 따라서 새 인스턴스를 수정 한 다음 저장할 수 있습니다. 또는 부작용없이 떠나십시오.

이 방법을 적용 할 수도 있습니다. https://stackoverflow.com/a/4054256/7995920

필자의 경우 '이름'필드에 고유 한 제약 조건을 갖춘이 조치는 효과가 있으며 모든 양식에서 요청할 수 있습니다.


def duplicate_jorn(modeladmin, request, queryset):
    post_url = request.META['HTTP_REFERER']

    for object in queryset:
        object.id = None
        object.name = object.name+'-b'
        object.save()

    return HttpResponseRedirect(post_url)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top