Django-----多对多示例查询

例--示范
# 电影表
class Move(models.Model):
name = models.CharField(max_length=50)
image_url = models.CharField(max_length=255)
class Meta:
db_table = 'move'
def __str__(self):
return self.name

# 演员表
class Action(models.Model):
name = models.CharField(max_length=50)
age = models.IntegerField()
gender = models.BooleanField(default=0)
move = models.ManyToManyField(Move,related_name='actor')
class Meta:
db_table = 'Action'
def __str__(self):
return self.name

ManyToManyField  ----写完迁移时会自动生成一张第三张表
 


	1. 借助多对多查询时用--------related_name='actor'
	2. 电影查询演员-----只需获取电影的id,用电影的id查询表first--
	# 电影id获取
	ids = request.GET.get('id')
	move = Move.objects.filter(id=ids).first()
	
	
	Html   里代码:---可以说,电影被谁主演是反查询
	{% for i in move.actor.all %}
	<tr>
	<td><a href="/goods/move_all?id={{i.id}}">			{{i.name}}</a></td>
	<td>{{i.age}}</td>
	<td>{% if i.gender == 1%}男
	{% else %}女
	{% endif %}</td>
	</tr>
	{% endfor %}
	
	
	3. 借助多对多查询时用--------move字段
	4. 查询演员拍的电影------只需要获取演员的id,用演员的id查询演员表first
	# 演员id获取
	ids = request.GET.get('id')
	action = Action.objects.filter(id=ids).first()
	
	Html   里代码:---可以说,电影被谁主演是正查询
	<h1>{{action.name}}主演的电影有</h1>
	
	{% for i in action.move.all %}
	{{i.name}}
{% endfor %}
posted @ 2020-02-29 13:36  Mr-刘  阅读(289)  评论(0编辑  收藏  举报