create account

Tx e37af6d3e241857591681354347ad33ae42fae8d@33126093

Included in block 33,126,093 at 2019-05-22 08:53:24 (UTC)


Raw transaction

ref_block_num30,396
ref_block_prefix3,215,357,221
expiration2019-05-22 09:03:21
operations
0.
0.comment
1.
parent_author""
parent_permlinkcoogger
authorhakancelik
permlinkdjango-admin-actions
title"Django Admin Actions"
body"<center>
<a href="https://www.coogger.com/@hakancelik/django-admin-actions">
<img alt="admin-actions" src="https://www.coogger.com/media/images/admin-actions.png">
</a>
<a href="https://www.coogger.com/@hakancelik/django-admin-actions">Read this content on coogger</a>
</center>
"
json_metadata"{"format": "markdown", "tags": ["django", "coogger", "python", "admin", "action"], "app": "coogger/1.7.1", "ecosystem": {"version": "1.7.1", "body": "Admin action k\u0131saca se\u00e7ilen nesneler ile toplu i\u015f uygulayabilme olay\u0131d\u0131r, se\u00e7ili b\u00fct\u00fcn kullan\u0131c\u0131lar\u0131 silmek gibi, a\u015fa\u011f\u0131da ki resim hangi konudan bahsetti\u011fimizi anlat\u0131r niteliktedir.\r\n\r\n![admin-actions](https://www.coogger.com/media/images/admin-actions.png)\r\n\r\nBu i\u00e7erikte **admin.py** dosyam\u0131za yeni **actionlar** yazarak baz\u0131 toplu i\u015flerimizi kolayla\u015ft\u0131raca\u011f\u0131z.\r\n\r\nbenim a\u015fa\u011f\u0131daki gibi bir modelim olsun, bu model ip banlamak i\u00e7in yazd\u0131m, banlanan ip siteye giremeyecek girdi\u011finde hata alacaki, modelimiz a\u015fa\u011f\u0131daki gibi.\r\n\r\n**/models.py**\r\n\r\n```python\r\nfrom django.db import models\r\n\r\nclass IPModel(models.Model):\r\n address = models.GenericIPAddressField(unique=True, verbose_name=\"Ip address\")\r\n ban = models.BooleanField(default=0)\r\n```\r\n\r\n### Action Fonsiyonu Yaz\u0131m\u0131\r\nAction fonksiyonu normal fonksiyon olup 3 tane parametre al\u0131r bunlar\r\n- ModelAdmin\r\n- HttpRequest\r\n- QuerySet\r\n\r\nBu fonksiyonumuz **ModelAdmin** ve **HttpRequest** 'i kullanmayaca\u011f\u0131z bunlar django i\u00e7in gerekli parametreler biz **QuerySet**'i kullanaca\u011f\u0131z.\r\n\r\n\u00f6rne\u011fin\r\n```python\r\ndef remove_ban(modeladmin, request, queryset):\r\n queryset.update(ban=False)\r\n```\r\nBu \u015fekilde yaz\u0131m performansl\u0131 yaz\u0131md\u0131r tabi isterseniz\r\n\r\n```python\r\nfor obj in queryset:\r\n do_something_with(obj)\r\n```\r\n\r\nBunun gibi \u015feylede yapabilirsiniz gelen nesne sizin verdi\u011finiz modeli kullanarak olu\u015fturulmu\u015f bir **queryset** sonu\u00e7ta.\r\n\r\n```python\r\ndef remove_ban(modeladmin, request, queryset):\r\n queryset.update(ban=False)\r\nremove_ban.short_description = 'Remove Ban'\r\n```\r\n\r\nBurada `remove_ban` fonksiyonumuza **short_description** ad\u0131nda bir atama yap\u0131ld\u0131\u011f\u0131n\u0131 g\u00f6r\u00fcn\u00fcyorz bunun amac\u0131 django bu de\u011fi\u015fkeni admin panelde **list_display** olarak kullan\u0131yor, a\u015fa\u011f\u0131daki resimde nerede kullan\u0131ld\u0131\u011f\u0131 g\u00f6r\u00fclmektedir.\r\n\r\n<center>![django_ban_admin_action](https://www.coogger.com/media/images/django_ban_admin_action.png)</center>\r\n\r\n\u015eimdi modelim i\u00e7in admin taraf\u0131n\u0131 yazal\u0131m.\r\n**/admin.py**\r\n\r\n```python\r\nfrom django.contrib.admin import ModelAdmin, site\r\nfrom django.http import Http404\r\n\r\nfrom .models import IPModel\r\n\r\ndef remove_ban(modeladmin, request, queryset):\r\n queryset.update(ban=False)\r\nremove_ban.short_description = 'Remove Ban'\r\n\r\ndef banned(modeladmin, request, queryset):\r\n queryset.update(ban=True)\r\nbanned.short_description = 'Banned'\r\n\r\nclass IPAdmin(ModelAdmin):\r\n list_display = [\"address\", , \"ban\"]\r\n list_display_links = [\"address\",, \"ban\"]\r\n list_filter = [\"ban\"]\r\n search_fields = [\"address\"]\r\n fields = (\r\n (\"address\"),\r\n (\"ban\"),\r\n )\r\n actions = [remove_ban, banned]\r\n\r\nsite.register(IPModel,IPAdmin)\r\n```\r\nYukar\u0131daki **admin.py** dosyamda iki tane admin action fonksiyonu yazd\u0131m ve **modeladmin** s\u0131n\u0131f\u0131ma bu actionlar\u0131 **actions = [remove_ban, banned]** \u015feklinde yazd\u0131m, django art\u0131k **IPAdmin** nesnemde iki tane action oldu\u011funu ve bunlar\u0131n g\u00f6revlerini biliyor.\r\n\r\n\u015fimdi admin sayfama gidip birden fazla ip adresi se\u00e7ip bunlar\u0131 toplu olarak banlayabilirim veya ban\u0131n\u0131 kald\u0131rabilirim."}}"
extensions[]
signatures
0.20344eee27402db0af6746edba578db8bd9479989069186dfb4b762415970e7a336e0724ba63d68bbdfa7f6ab7353571f8a99932dd6934727a77c0cb50578d0afc
transaction_ide37af6d3e241857591681354347ad33ae42fae8d
block_num33,126,093
transaction_num36