2017-01-11 27 views
2

Djangoの管理者には、テンプレートに情報を送信するための印刷ボタンがあります。 Actionドロップダウンリンクを追加します。ここでは、チェックボックスを使用して希望するエントリを選択し、Actionドロップダウンリストで Printを選択します。 しかし、私がAсtionドロップダウンへのリンクを追加したとき、私は第3引数を得ることについてエラーになります。私はこれが第三の議論であるとは理解できません。Django Adminのアクションへのリンクを追加

admin.py

@admin.register(Salary) 
class SalaryAdmin (admin.ModelAdmin): 
    list_display = ('worker', 'salary_uah', 'dates', 'button') 
    search_fields = ('worker', 'salary_uah', 'dates') 
    list_filter = ('worker', 'date') 
    actions = ['button'] 

    def button(self, obj): 
     return '<a class="button" href="{}">Print</a>'.format(reverse('act', args=[obj.pk])) 

    button.short_description = 'Actions' 
    button.allow_tags = True 

urls.py

urlpatterns = [ 
    url(r'^$',home, name='home'), 
    url(r'^add/$',add_worker, name='add'), 
    url(r'^act/(?P<obj>[\w-]+)$',acts, name='act') 
] 

models.py

class Salary (models.Model): 
    worker = models.ForeignKey(Worker) 
    salary_uah = models.IntegerField ('Salary') 
    date = models.DateTimeField('Date', default=datetime.datetime.utcnow()) 

views.py

def acts (request, obj): 
    if not request.user.is_authenticated(): 
     return redirect('admin:login') 
    salary = Salary.objects.get(id=obj) 
    workers = Worker.objects.filter(id=salary.worker.pk).values() 
    salary = Salary.objects.filter(id=obj).values() 
    return render(request, 'zpapp/act.html', {'workers':workers, 'salary':salary }) 

エラーメッセージ:

TypeError at /admin/zpapp/salary/ 
button() takes 2 positional arguments but 3 were given 

あなたは私がアクションにリンクを追加する助けてもらえますか?

答えて

1

あなたは間違ったトラックにいると思います。アクションは、djangoによって自動的にドロップダウンに追加されるテキストであるはずです。 HTMLリンクAFAIKはここではサポートされていません。さらに:

まず、アクション が管理者からトリガーされたときに呼び出される関数を記述する必要があります。現在 要求、 ユーザーが選択したオブジェクトのセットを含むクエリセットを表す

現在ModelAdminのアンのHttpRequest:アクション機能は3つの引数を取るだけで、通常の 機能です。当社の発行する-これら-の記事を関数はModelAdminのか リクエストオブジェクトを必要としませんが、我々はクエリセットを使用します。

出典:

あなたの行動、それがすべてで使えるようにだならば、する必要がありますあなたが望む一方場合

def button(self, request, queryset): 

ことは、あなたが管理テンプレートを変更する必要があり、リストビューまたは編集ビューにHTMLボタンを追加することです。

関連する問題