객체 연관 질의(정방향, 반방향)

1602 단어

관련 질의

#coding=utf8

from django.db import models

# Create your models here.


# coding=utf8

from django.db import models


# Create your models here.


class Book(models.Model):
    title = models.CharField(max_length=64)
    price = models.IntegerField()
    color = models.CharField(max_length=64)
    page_num = models.IntegerField(null=True)
    publisher = models.ForeignKey("Publisher")     #  , 
    def __str__(self):
        return self.title.encode("utf-8")


class Author(models.Model):
    name = models.CharField(max_length=30)

    def __str__(self):
        return self.name.encode("utf-8")


#      book - author

class Book2Author(models.Model):
    author = models.ForeignKey("Author")
    book = models.ForeignKey("Book")

    # state = models.CharField(max_length=64)

    class Meta:
        unique_together = ["author","book"]  #  


class Publisher(models.Model):
    name = models.CharField(max_length=64)
    city = models.CharField(max_length=63)    # 

    def __str__(self):
        return self.city.encode("utf-8")


정방향 찾기: 대상에서 속성으로 찾기


책 고의publisher 필드에서 출판사를 찾은 후 이 출판사를 통해 출판사의 주소를 찾았다
    ob = models.Book.objects.filter(title="go")[0]
    print(ob.publisher.city)


ob는 바로 《고》책의 출판사 대상이다.
역방향 찾기:
    ob = models.Publisher.objects.filter(id=2)[0]
    print(ob.book_set.all().values("title"))

책 역방향 사용set 쿼리,values를 통해 책의 필드를 찾습니다. 필요하면distinct () 를 사용하여 다시 찾을 수 있습니다.

좋은 웹페이지 즐겨찾기