Django Admin에 버튼 추가
2021. 1. 7. 22:56ㆍ파이썬/Django
project 레벨에서는 템플릿 파일을 오버라이딩하여 사용할 수 있음
app 레벨에서는 템플릿 파일 url을 변경하여 사용할 수 있음
[admin.py]
from django.urls import path
..
change_list_template = 'app이름/모델명_change_list.html'
def get_urls(self) :
urls= super().get_urls()
my_urls = [
path('sync/', self.sync),
]
return my_urls + urls
def sync(self,request) :
with connections['local'].cursor() as cursor :
cursor.execute(updae_or_insert_delete_sql)
cursor.execute('select id,col1, col2 from 테이블')
for row in cursor.fetchall() :
try :
temp = 모델.objects.get(id=row[0])
temp.컬럼1=row[1],
temp.컬럼2=row[2]
except :
temp = 모델(
id=row[0],
컬럼1=row[1],
컬럼2=row[2]
)
temp.save()
self.message_user(request, '모델(id=%s,컬럼1=%s) is created!' %(temp.id,temp.컬럼1))
self.message_user(request, 'ㅇㅇ정보s are synced!')
self.message_user(request, '모델s are synced!')
return HttpResponseRedirect('../')
[/app이름/templates/app이름/모델명_change_list.html]
{% extends 'admin/change_list.html' %}
{% block object-tools %}
<div>
<form action='sync/' method='POST'>
{% csrf_token %}
<button type='submit'>Sync</button>
</form>
</div>
<br>
{{ block.super }}
{% endblock %}
'파이썬 > Django' 카테고리의 다른 글
Django 앱 생성 및 등록 (0) | 2021.01.14 |
---|---|
Django Admin list_display 재컴파일 없이 갱신 (0) | 2021.01.08 |
QuerySet 참조 (0) | 2021.01.07 |
'Cannot assign "%r": the current database router prevents this relation.' % value) (0) | 2021.01.07 |
관련 문의 (0) | 2021.01.07 |