Django 기본 - 2: Django 상용 설정 및 ORM
------- , ,
이번 에는 주로 django 에서 자주 사용 되 는 설정 을 수집 하여 여러분 이 조회 하기에 편리 합 니 다.
디 렉 터 리:
LANGUAGE_CODE = 'zh_Hans'TIME_ZONE = 'Asia/Bangkok'
포맷 시간 표시
USE_L10N = FalseDATETIME_FORMAT = 'Y-m-d H:i:s'DATE_FORMAT = 'Y-m-d'
지정 static
STATIC_URL = '/static/'STATICFILES_DIRS = (os.path.join(BASE_DIR,"statics"),)
from app.models import *admin.site.site_header = '서버 요금 연장 정보' \ # 페이지 에 제목 admin. site. site 를 표시 하도록 설정 합 니 다.title = '서버 요금 연장 정보' \ # 페이지 머리 제목 설정
@ admin. register (TableName) class TNAdmin (admin. ModelAdmin): fields = ('issue', 'start date', 'application', 'result', 'receiver', 'end date', 'memo') \ # 편집 인터페이스 에 표 시 된 필드 list 설정display = ('number', 'issue', 'start date', 'application', 'result', 'receiver', 'end date') \ # 목록 에 표 시 된 필드 searchfields = ('start date',) \ # 검색 표시 줄 empty 추가value_display = '입력 하지 않 음' \ # 빈 필드 를 짧 은 밑줄 list 로 덮어 씁 니 다.per_page = 50 \ # 각 페이지 에 표 시 된 줄 수 ordering = ('- number',) \ # 기본 정렬 필드 설정, - 내림차 listeditable = ['result',] \ # 편집 가능 한 필드 설정 listdisplay_links = ('id', 'caption') \ # 편집 인터페이스 에 들 어 갈 필드 를 설정 합 니 다 datehierarchy = 'start_date '\ # 상세 시간 층 별 선별 listfilter = ('start date', 'end date', 'receiver', 'result') \ # 필터
python manage.py makemigrationspython manage.py migrate
python manage.py createsuperuser
ORM, 대상 관계 맵 은 대응 하 는 관계 로 대상 을 대상 으로 프로 그래 밍 언어 에서 서로 다른 유형의 시스템 의 데이터 간 의 전환 을 실현 하 는 데 사용 된다. 다시 말 하면 대상 을 대상 으로 하 는 방식 으로 데이터 베 이 스 를 만 드 는 표 와 삭제, 수정 등 작업 을 하 는 것 이다.
장점: 1.1 ORM 은 우리 의 유 니 버 설 데이터 베 이 스 를 쉽게 만 들 었 고 빌어먹을 SQL 문 구 를 전혀 고려 하지 않 고 신속하게 개발 했다. 이로써 1.2 는 일부 초보 프로그램 이 sql 문 구 를 쓰 는 데 가 져 온 성능 문 제 를 피 할 수 있다.
단점: 1.3 성능 이 희생 되 었 지만 현재 의 각종 ORM 프레임 워 크 는 여러 가지 방법 을 시도 하고 있 습 니 다. 예 를 들 어 캐 시, 로드 지연 등 으로 이 문 제 를 줄 이 고 있 습 니 다. 1.4 개별 복잡 한 조회 에 대해 ORM 은 아직도 힘 에 부 치지 않 습 니 다. 이 문 제 를 해결 하기 위해 ORM 은 보통 raw sql 을 쓰 는 것 을 지원 합 니 다.
2. ORM 의 사용
2.1
:foreignkey( )
:
2.2
# ,
# python manage.py makemigrations
# python manage.py migrate
from django.db import models
class (models.Model):
= models. ( )
def __str__(self): # ,
return self.
:
= models.CharField(max_length=64)
CharField :
IntegerField :
ForeignKey :
ManyToManyField :
2.2.1 , create
create :
.object.create(
1= 1,
2= 2,
3= 3,
)
create :
.object.create(**{" 1":" 1"})
save :
= ( 1=" 1")
.save()
save :
= ()
. =" 1"
.save()
2.2.3
.objects.filter( ).deleter()
2.2.3
update :filter , save
.objects.filter( 1, 2).update( = )
save ( ):get
= .objects.get( )
. =
.save()
2.2.4
<1>
= models. .objects.filter(id=2)[0] # id=2 ,
filter(**kwargs) :
all() :
= models. .objects.filter(id=2).values(" ")
# , , " : "
# [{" 1":" 1"},{" 2":" 2"}]
<2> , .filter .all
exclude(**kwargs) :
order_by(*field) :
# : = models. .objects.order_by("id")
# : = models. .objects.order_by("-id")
reverse() :
distinct() :
values_list(*field) : values() ,
count() :
first() :
last() :
exists() : QuerySet , True, False
:
.objects.all() .filter() QuerySet( ),
sql, QuerySet 。
QuerySet :
1.
2.
objs = models. .objects.all()
#
for obj in objs:
print("obj:",obj)
#
print(objs[1])
print(objs[1:4])
print(objs[::-1])
3.
3.1 (ForeignKey), 1:" " 2:" ", ,
class (models.Model):
= models.CharField(max_length=30)
= models.CharField(max_length=30)
class (models.Model):
= models.CharField(max_length=30)
= models.ForeignKey(" ")
# ,ForeignKey, ,Django " _id"
# ,
#
.objects.create (
= " "
_id = "1" //
)
#
pub = models. .objects.filter(id=1) #
.objects.create (
= " "
= pub[0] #
)
3.2 (ManyToManyField)
, , ,
class (models.Model):
= models.CharField(max_length=30)
= models.ManyToManyField(" ") #
class (models.Model):
= models.CharField(max_length=64)
, :
id _id _id
1 5 4
2 5 1
3 5 2
4 6 1
5 6 1
:
#
1 = models. .objects.get(id=3)
1 = models. .objects.get(id=4)
= models. .objects.filter(id=3)[0]
#
. .add( 1, 2)
. .add( 1)
. .add( 2)
. .add(*[ 1, 2])
。 :
id _id _id
1 3 3
2 3 4
:
class (models.Model):
= models.CharField(max_length=30)
= models.ManyToManyField(" ") #
class (models.Model):
= models.CharField(max_length=64)
class (models.Model):
= models.ForeignKey( )
= models.ForeignKey( )
class Meta: #
unique_together=[" "," "] # ,
id _id _id
1 3 3 # ,
2 3 3 # ,
3 3 4
3.3
OneToOne: Foreignkey,unqiue=True
4.
4.1
,
4.1.1
# : , , ,
# ,
obj = models. .objects.filter( =" ")[0]
obj. . # ,
4.1.2
# , ,
#
obj = models. .objects.filter(name=" ")
obj. _set.all().values(" ") # " _set"
4.2
models. 1.objects.filter(id__lt=10,id__gt=1) # id 1 10
models. 1.objects.filter(id__in=[11,22,33]) # id 11/22/33
models. 1.objects.exclude(id_in=[11,22,33]) #
models. 1.objects.filter(name__contains="ven") # sql
models. 1.objects.filter(name__icontains="ven") # icontains
models. 1.objects.filter(id__range=[1,2]) # ,bettwen and
startswith( )、istartwith、endswith( )、iendwith
4.3
#
models. .objects.filter( __ =" ").vaules(" ").distinct()
#
models. .objects.filter( __ =" ").values(" ")
# ,
models. .objects.filter( __ =" ").values(" __ ")
4.4 ,
from django.db.models import Avg,Min,Sum,Max
Avg,Min,Sum,Max
<1>
,
aggregate(*args,**kwargs)
# wangyi
.objects.all().aggregate(Avg(' '))
<2>
,
annotate(*args,**kwargs)
#
.objects.values(" __ ").annotate(Sum("price"))
4.5 F Q
4.5.1 F , ,
from django.db.models import F,Q
# 20
models. .objects.all().update( =F(' ')+20) #
4.5.2 Q ,
, , , and;
, or and, : a and (b or (d and e))
from django.db.models import F,Q
, :
obj = models. .objects.filter(id=3)[0]
obj = models. .objects.filter(Q(id=3))[0]
Q
obj = models. .objects.filter( Q(id=3) | Q( =" ") ) # "|" or
obj = models. .objects.filter( Q( __gt=50) & (Q(id=3) | Q( =" ")) ) # 50 (id=3 = )
obj = models. .objects.filter( Q( __gt=50) & (Q(id=3) | Q( =" ")) , =" " ) # Q , Q ( ( 50 (id=3 = ) )
5. , , ,
class (models.Model):
= models.CharField(max_length=30)
= models.ManyToManyField(" ")
def __str__(self)
return self. # str
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Django】관리 화면의 커스터마이즈최근 업무에서 장고를 만질 기회가 있었기 때문에, 그 때 조사한 내용을 수시로 갱신해 나가려고 생각합니다. 완전히 자신 용 기사이므로 많이 요구하지 마십시오. · 전제 관리 화면에 로그인할 수 있는 상태 models...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.