2016-08-05 2 views
-1

을 저장하지 않고 업데이트 필드 :장고 ModelAdmin :이처럼 보이는 관리자 페이지가

내가 누른 후 (이 "getname"라고합니다) 버튼을 생성 한 내 관리자 페이지에서
class NameAdmin(admin.ModelAdmin): 
    list_display = ['long_name', 'short_name'] 
    search_fields = ['long_name','short_name'] 

, short_name 필드를 업데이트해야합니다 (비어있는 경우 그렇지 않으면 그대로 두십시오). 그러나 삽입 된 텍스트는 데이터베이스에 저장되어서는 안됩니다.

사용자가 텍스트에 동의하면 "저장"을 누른 다음 데이터베이스에 저장해야합니다.

save_model 메서드는 데이터베이스에 저장되므로 물론 작동하지 않습니다.

def save_model(self, request, obj, form, change): 
    if 'getshortname' in request.POST: 
    if not obj.short_name: 
     obj.short_name = model_support.parse_shortname(obj.long_name) 

아이디어가 있으십니까?

많은 감사

내가 forms.py의 형태로 만들 것
+0

JS에서 필드를 채우는 것이 어떨까요? –

+0

내가 잘 모르겠다면, 변경 폼보기의 ""getname "'버튼입니까? – Omni5cience

답변

0

: admin.py에서 다음

from django import forms 
from myapp.models import MyModel 

class MyModelForm(forms.ModelForm): 
    update_me = forms.CharField(max_length=100, required=False) 

    class Meta(Object): 
     model = MyModel 

:

from django.contrib import admin 
from myapp.forms import MyModelForm 


class MyModelAdmin(admin.ModelAdmin): 
    form = MyModelForm 


admin.site.register(MyModel, MyModelAdmin) 

이 방법을, 당신은 모델의 필드가 데이터베이스에 저장되지 않을 필요가 없으며 업데이트 할 수 있으며 save_model 메서드를 사용하면 값을 모델의 관련 필드에 전달하여 데이터 상자에 저장할 수 있습니다 ase.

+0

답변 해 주셔서 감사합니다. 그러나 모델에 새로운 필드를 추가해서는 안됩니다 (그대로 유지해야합니다). 데이터베이스를 전혀 건드리지 않고 관리자의보기 만 업데이트 할 수있는 방법이 있습니까? – ClementFilou

+0

@ClementFilou 위 코드를 사용하면 데이터베이스가 손상되지 않습니다. 추가 관리 필드를 원하지 않으면 javascript 및 ajax를 사용하여 기존 필드에 대한 작업을 수행 할 수 있습니다. – raratiru

관련 문제