Notice
Recent Posts
Recent Comments
Tags
- asp.net dropdownlist
- ViewData
- 하드 윈도우 복사
- 타임피커
- ASP.Net Core 404
- javascript 유효성체크
- 강제이동
- jquery 바코드
- jquery 바코드생성
- javascript 바코드스캔
- ViewBag
- 말줄임표시
- 바코드 스캔하기
- javascript 바코드 생성
- SSD 복사
- asp.net Select
- asp.net core Select
- XSS PHP
- Mac Oracle
- 맥 오라클설치
- TempData
- php 캐쉬제거
- XSS방어
- javascript redirection
- django 엑셀불러오기
- 하드 마이그레이션
- 파일업로드 유효성체크
- 404에러페이지
- 파일업로드 체크
- 바코드 생성하기
웹개발자의 기지개
[Django] ORM - Create, Update, Delete 문 (1:다, 다:다) Model 내에 ForeignKey 와 ManyToManyField 본문
python/Django
[Django] ORM - Create, Update, Delete 문 (1:다, 다:다) Model 내에 ForeignKey 와 ManyToManyField
http://portfolio.wonpaper.net 2022. 5. 1. 00:52우선 Models.py 의 소스이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
from django.db import models
class Blog(models.Model):
name = models.CharField(max_length=100)
tagline = models.TextField()
def __str__(self):
return self.name
class Author(models.Model):
name = models.CharField(max_length=200)
email = models.EmailField()
def __str__(self):
return self.name
class Entry(models.Model):
blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
headline = models.CharField(max_length=255)
body_text = models.TextField()
pub_date = models.dateField()
mod_date = models.dateField()
authors = models.ManyToManyField(Author)
number_of_comments = models.IntegerField()
number_of_pingbacks = models.IntegerField()
raging = models.IntegerField()
def __str__(self):
return self.headline
|
cs |
위에서 중요하게 볼 부분은 20라인 ForeignKey 와 25라인의 ManyToManyField 부분이다.
1. Create 문
(1) 클래스 객체를 만들어서 save() 함수를 실행
1
2
3
4
|
from blog.models import Blog
b = Blog(name='Beatles Blog', tagline='All the latest Beatles news.')
b = save()
|
cs |
(2) create() 함수를 이용
1
|
p = Blog.objects.create(name='Beatles Blog', tagline='All the latest Beatles news.')
|
cs |
https://docs.djangoproject.com/en/3.1/ref/models/querysets/#django.db.models.query.QuerySet.create
2. Update 문
1
2
|
b.name = 'Lee'
b.save()
|
cs |
(1) ForeignKey 필드 업데이트
1
2
3
4
5
6
7
|
from blog.models import Blog, Entry
entry = Entry.objects.get(pk=1)
cheese_blog = Blog.objects.get(name='Chedar Talk')
entry.blog = cheese_blog
entry.save()
|
cs |
(2) ManyToMany 필드 업데이트 - add() 이용
1
2
3
4
|
from blog.models import Author
joe = Author.objects.create(name='Joe')
entry.authors.add(joe)
|
cs |
한꺼번에 add() 이용도 가능하다.
1
2
3
4
5
|
john = Author.objects.create(name='John')
paul = Author.objects.create(name='Paul')
ringo = Author.objects.create(name='Ringo')
entry.authors.add(john, paul, ringo)
|
cs |
3. Delete 문
1
2
|
b.delete()
# (1, {'Entry Go': 1})
|
cs |
리턴값은 지워진 object 전체개수와 dictionary반환( 지워진 object객체이름, 지원진 object객체 개수 ) 한다.
참고 : https://eunjin3786.tistory.com/337
'python > Django' 카테고리의 다른 글
Comments