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フィールドを更新する必要があります(空の場合はそれを残すか、そうでない場合はそのままにしておきます)。ただし、挿入されたテキストをデータベースに保存しないでください(SHOULD NOT)。

ユーザーがテキストに同意する場合は、「保存」を押すだけでデータベースに保存する必要があります。

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) 

感謝

+0

JSでフィールドを入力してみませんか? –

+0

変更フォームビューの '' getname ''ボタンは私が従うかどうかわかりません。 – Omni5cience

答えて

0

私はforms.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 

次にadmin.pyに:

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

関連する問題