IT TIP

Django 관리 인터페이스에서 항목을 복제하는 방법이 있습니까?

itqueen 2020. 11. 27. 21:50
반응형

Django 관리 인터페이스에서 항목을 복제하는 방법이 있습니까?


관리 인터페이스에서 기존 목록을 복제하는 기능을 쉽게 추가 할 수있는 방법이 있는지 궁금하십니까?

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


이것을 ModelAdmin에 추가하기 만하면 다른 이름으로 저장할 수 있습니다 .

save_as = True

이렇게하면 "저장 및 다른 항목 추가"단추가 "다른 이름으로 저장"단추로 바뀝니다. "다른 이름으로 저장"은 개체가 이전 개체가 아닌 새 개체 (새 ID 사용)로 저장됨을 의미합니다.


여기에 더 나은 (기본 제공되지는 않음) 솔루션이 있습니다.

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

README에서 :

Django Admin에는 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)

참고 URL : https://stackoverflow.com/questions/180809/in-the-django-admin-interface-is-there-a-way-to-duplicate-an-item

반응형