素材牛VIP会员
[MySQL]不用外键, 如何处理如下多对多查询比较好( 更好思路 )?
 真***溜  分类:Python  人气:1266  回帖:1  发布于6年前 收藏

实际现象

  1. 不使用任何外键( 在程序中维护这种多对多的逻辑关系 )

  2. 多对多查询问题

预期现象

  1. 是否有更好的查询方法( 我首相想到了 JOIN , 但是貌似不行 )

相关代码

  • 表定义

class User(models.Model):
    info = models.CharField(max_length=1000, default='')
    
class Clients(models.Model):
    info = models.CharField(max_length=1000)
    
    
class UserClient(models.Model):
    user_id = models.IntegerField()
    client_id = models.IntegerField()
    

  • 我的查询

# 查询某用户的所有客户端
user = User.objects.filter(id__exact=10).first()
client_ids = UserClient.objects.filter(user_id__exact=user.id).valuelist('client_id').all()
clients = Client.objects.filter(id__in=client_ids).all()
               ( 如果有外键的话, 一般使用一条 INNER JOIN 就够了 )

上下文环境

  1. Django 1.9

  2. Mysql 5.6

  3. Linux

 标签:mysqlpython

讨论这个帖子(1)垃圾回帖将一律封号处理……

Lv7 码师
这***人 JS工程师 6年前#1
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取