2017-05-03 10 views
0

NationモデルIDをDjango管理者change_formに渡したいので、編集時にボタンを2つ表示することができます。 idをrender_change_form関数に渡してみて、テンプレートを完成させようとしましたが、以下のエラーが発生しています。ID属性エラー変更フォームのDjango管理者

'NationAdmin' object has no attribute 'nation_id' 

N:これは編集するときに正常に動作しますが、私はDjangoの管理ダッシュボードを経由して新しいモデルオブジェクトを追加したいときには、このエラーがスローされますBでは。

方法はNationAdmin

#this method is to get the id 
    def change_view(self, request, nation_id=None, form_url='', extra_context=None): 
     self.nation_id = nation_id 
     return self.changeform_view(request, nation_id, form_url, extra_context) 

#for form 
def render_change_form(self, request, context, *args, **kwargs): 
     if self.nation_id: #django is telling me this line is causing error 
      nation= self.get_object(request, self.nation_id) 
      context.update({'nation':nation}) 
     return super(NationAdmin, self).render_change_form(request, context, *args, **kwargs) 

Change_form.html

{% if not nation.is_moderated and not nation.is_rejected %} 
     <a href="{% url 'activate_moderation' nation.id %}"> <input type="button" value="{% trans 'Approve' %}" name="_approvebutton" /></a> 
    {% endif %} 

答えて

0

の下であなたはoriginalで行うことができます。設定する必要はありませんnation_id

def render_change_form(self, request, context, *args, **kwargs): 
     if context.get('original'): # 
      obj = context['original'] 
      #this will be the object you are trying to update 
     return super(NationAdmin, self).render_change_form(request, context, *args, **kwargs) 
+0

大丈夫..「オリジナル」はどこに入っていますか?モデル管理者のキーワード – YoYo

+0

そのキーワードはあなたが変更しているオブジェクトになるadminで使用しています。新しいオブジェクトを追加する場合は、Noneになります。それで私は条件を置く理由を – itzMEonTV

+0

私はそれを試してみましょう。ありがとう! – YoYo

関連する問題