例--示范
# 电影表
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 %}