django中的ORM查询,针对复杂的查询,处理使用A.objects.filter(foreign_name__field)进行查询外。还可以使用select_related 和prefetch_related,进行性能的优化
select_related:
将会根据外键关系(注意: 仅限单对单和单对多关系),在执行查询语句的时候通过创建一条包含SQL inner join操作的SELECT语句来一次性获得主对象及相关对象的信息
1、模型类创建
users/modes.py
from django.db import models
# Create your models here.
class UserInfo(models.Model):
username = models.CharField(verbose_name='用户名', max_length=225)
def __str__(self):
return self.username
class Meta:
db_table = 'userinfo'
class Tag(models.Model):
name = models.CharField(verbose_name='标签名称', max_length=225)
def __str__(self):
return self.name
class Meta:
db_table = 'tag'
class Article(models.Model):
title = models.CharField(verbose_name='标题', max_length=225)
content = models.CharField(verbose_name='内容', max_length=225)
# 外键
username = models.ForeignKey(verbose_name='用户', to='UserInfo', on_delete=models.DO_NOTHING)
tag = models.ManyToManyField(verbose_name='标签', to='Tag')
def __str__(self):
return self.title
class Meta:
db_table = 'article'