본문 바로가기
개발/python

[Python Django] Foreignkey 외래키연동

by 아크투어 2023. 3. 24.
반응형

1. 개요

  • Python Django Admin 에서 외래키 연동을 하기 위한 샘플코드이다.
  • 사용자 정보와 거래처정보를 연동해서 보여준다.

 

2. Python Django

  • Django는 2005년부터 시작된 Python의 오픈 소스 웹 프레임워크이자 풀 스택 프레임워크이다.
  • 일반적으로 파이썬을 웹 서비스에 쓴다고 하면 Django 또는 Flask를 쓴다고 생각하면 된다.
  • 기본적으로 Model에 해당하는 DBMS는 SQLite를 사용하게 되어있으며, Django Admin 기능을 통해 쉽게 조회/편집이 가능하다.
import math
from .models import *
from api_user.models import UserInfoModel

from rangefilter.filter import DateRangeFilter
from django.contrib import admin

class UserInfoInline(admin.TabularInline):
    model = UserInfoModel

    list_display = ["user_id", "user_nm", "user_mobile_no", "origin_user_pw", "service_agree", "location_agree",
                    "marketing_agree", "person_agree", "cre_date", ]
    readonly_fields = ["user_id", "user_nm", "user_mobile_no", "origin_user_pw", "service_agree", "location_agree",
                    "marketing_agree", "person_agree", "cre_date", ]
    exclude = ["user_pw", "device_token", ]

    can_delete = False
    extra = 1
    max_num = 10
    verbose_name = '사용자'
    verbose_name_plural = '사용자'


    def has_change_permission(self, request, obj=None):
        return False

    def has_add_permission(self, request, obj=None):
        return False

    def has_delete_permission(self, request, obj=None):
        return False





class CustInfoAdmin(admin.ModelAdmin):
    list_display = ['cust_code', 'cust_name', 'cust_mbtl_no', 'cust_addr', 'div_addr', 'del_yn','cre_date',]

    list_display_links = ['cust_code', 'cust_name']
    list_per_page = 20
    list_filter = ['del_yn', ('cre_date', DateRangeFilter)]
    inlines = [UserInfoInline,]
    search_fields = ['cust_code', 'cust_name', 'cust_mbtl_no', 'del_yn',]
    ordering = ['cust_code']

    def get_readonly_fields(self, request, obj=None):
        if obj:
            return ["cust_code", "cre_date",]
        else:
            return []

    def has_add_permission(self, request):
        return False

    def has_change_permission(self, request, obj=None):
        return True

    def has_delete_permission(self, request, obj=None):
        return False

admin.site.register(CustInfoModel, CustInfoAdmin)
반응형

'개발 > python' 카테고리의 다른 글

[Python] 윈도우11 설치 및 실행확인  (0) 2023.04.05