1、models.py
class Publisher(models.Model):
name = models.CharField(max_length=32)
def __str__(self):
return '出版社对象名:{}'.format(self.name)
class Book(models.Model):
title = models.CharField(max_length=32)
price = models.IntegerField()
publisher = models.ForeignKey(to='Publisher', on_delete=models.CASCADE,related_name='books')
def __str__(self):
return '书籍对象名:{}'.format(self.title)
class Author(models.Model):
name = models.CharField(max_length=32)
books = models.ManyToManyField(to='Book')
def __str__(self):
return self.name
2、外键查询.py
import os
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "orm_about.settings")
import django
django.setup()
from app01 import models
book_obj = models.Book.objects.get(id=2)
print(book_obj)
books = models.Book.objects.filter(publisher_id=models.Publisher.objects.get(name='环球日报出版社').id)
print(books.values())
obj = models.Book.objects.filter(publisher__name='人民日报出版社')
print(obj)
obj = models.Book.objects.all().values('title','publisher__name')
print(obj)
obj = models.Publisher.objects.get(id=1)
print(obj.books.all())
obj = models.Publisher.objects.filter(id=models.Book.objects.get(title='python自动化').publisher_id)
print(obj)
obj = models.Publisher.objects.filter(books__title='python自动化')
print(obj)
obj = models.Book.objects.get(id=1).publisher.name
print(obj)