create account

Django Admin Actions by hakancelik

View this thread on: hive.blogpeakd.comecency.com
· @hakancelik ·
Django Admin Actions
<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>
👍  , ,
properties (23)
authorhakancelik
permlinkdjango-admin-actions
categorycoogger
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."}}"
created2019-05-22 08:53:21
last_update2019-05-22 08:53:21
depth0
children1
last_payout2019-05-29 08:53:21
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length287
author_reputation15,102,487,166,852
root_title"Django Admin Actions"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id85,290,881
net_rshares8,034,325,681
author_curate_reward""
vote details (3)
@steemitboard ·
Congratulations @hakancelik! You received a personal award!

<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@hakancelik/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table>

<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@hakancelik) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=hakancelik)_</sub>


###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!
properties (22)
authorsteemitboard
permlinksteemitboard-notify-hakancelik-20200123t191509000z
categorycoogger
json_metadata{"image":["https://steemitboard.com/img/notify.png"]}
created2020-01-23 19:15:09
last_update2020-01-23 19:15:09
depth1
children0
last_payout2020-01-30 19:15:09
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length628
author_reputation38,975,615,169,260
root_title"Django Admin Actions"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id94,695,170
net_rshares0