Django 1.5.4 주제 28 키 조작

1908 단어 django
ForeignKey relatedname=string, 키 값이 여러 개 있으면, 충돌을 피하려면 지정하는 것이 좋습니다.
예: 한 작가가 여러 책에 대응하고, 한 책에 한 작가만 대응한다.
모델 코드:
class Person(models.Model);
name = models.CharField('    ', max_length=10)
age = models.IntegerField('    ')

class Book(models.Model):
person = models.ForeignKey(Person, related_name='person_book')
title = models.CharField('    ', max_length=10)
pubtime = models.DateField('    ')

1.1 저자로부터 책 얻기
django의 Filter 방법은 데이터베이스에서 일치하는 결과를 얻어 대상 목록을 되돌려줍니다. 기록이 존재하지 않으면 [] 을 되돌려줍니다.Filter는 캐시 데이터 기능이 있는 것 같습니다. 첫 번째로 데이터베이스를 조회하고 캐시를 생성합니다. 다음에 Filter 방법을 호출하면 캐시 데이터를 직접 얻을 수 있습니다. get 방법은 매번 실행할 때마다 데이터베이스를 직접 조회합니다. 이것이 정확한지 모르겠습니다.
person = Person.objects.fiter(    )
book = person.book_set.all()

1.2.책으로부터 저자를 얻다
p = book.person

둘.여러 쌍의 ManyToManyField
models 코드
class Author(models.Model):  
    first_name = models.CharField(max_length=30)  
    last_name = models.CharField(max_length=40)  
    email = models.EmailField()  
      
class Book(models.Model):  
    title = models.CharField(max_length=200)  
    authors = models.ManyToManyField(Author)  

2.1 책으로부터 저자 얻기
django의 get 방법은 데이터베이스에서 일치하는 결과를 얻어 대상을 되돌려줍니다. 기록이 존재하지 않으면 오류가 발생합니다.
b = Book.objects.get(id=50)
b.authors.all()
b.authors.filter(first_name='Adam')

2.2.저자로부터 책을 얻다
a = Author.objects.get(id=1)
a.book_set.all()

2.3.객체 추가 방법
a = Author.objects.get(id=1)
b = Book.objects.get(id=50)
b.authors.add(a)

2.4.객체 객체 삭제 방법
a = Author.objects.get(id=1)
b = Book.objects.get(id=50)
b.authors.remove(a)    b.authors.filter(id=1).delete()

좋은 웹페이지 즐겨찾기