orm - django orm join 没有 foiriegn 键
问题描述
设置
- Django 2.0.2
- 玛丽亚数据库 10.2
- 视窗服务器 2012
模型.py
class Postreply(models.Model):
replyuid = models.BigAutoField(db_column='ReplyUID', primary_key=True)
postuid = models.BigIntegerField(db_column='PostUID')
useruid = models.BigIntegerField(db_column='UserUID')
content = models.TextField(db_column='Content')
registerdate = models.DateTimeField(
db_column='RegisterDate', default=datetime.datetime.today().strftime("%Y-%m-%dT%H:%M:%S"))
class Meta:
managed = False
db_table = 'postreply'
class Postinfo(models.Model):
postuid = models.BigAutoField(db_column='PostUID', primary_key=True)
useruid = models.BigIntegerField(db_column='UserUID')
content = models.TextField(db_column='Content')
replycount = models.IntegerField(db_column='ReplyCount', default=0)
registerdate = models.DateTimeField(
db_column='RegisterDate', default=datetime.datetime.today().strftime("%Y-%m-%dT%H:%M:%S"))
class Meta:
managed = False
db_table = 'postinfo'
class Userinfo(models.Model):
useruid = models.BigAutoField(db_column='UserUID', primary_key=True)
useremail = models.CharField(
db_column='UserEmail', unique=True, max_length=100)
userpassword = models.CharField(db_column='UserPassword', max_length=128)
passwordsalt = models.CharField(db_column='PasswordSalt', max_length=128)
usersex = models.IntegerField(db_column='UserSex')
userage = models.IntegerField(db_column='UserAge')
username = models.CharField(
db_column='UserName', max_length=100, default=0)
class Meta:
managed = False
db_table = 'userinfo'
我想postreply
按字段过滤表并在经过过滤的postreply 中通过 useruidpostuid
获取实例userinfo
如果 postinfo ex)
postuid =3
回复前)
postuid = 3 useruid =21 replyuid= 1
postuid = 3 useruid =22 replyuid= 2
postuid = 3 useruid =21 replyuid= 3
postuid = 2 useruid =21 replyuid= 4
postuid = 3 useruid =33 replyuid= 5
用户信息前)
useruid = 21 username = 'A'
useruid = 22 username = 'B'
useruid = 33 username = 'C'
如果把 postuid = 3 我想要这个
postuid = 3 useruid =21 replyuid= 1 username = 'A'
postuid = 3 useruid =22 replyuid= 2 username = 'B'
postuid = 3 useruid =21 replyuid= 3 username = 'A'
postuid = 3 useruid =33 replyuid= 5 username = 'C'
如何做到这一点
解决方案
通过使用该values_list
方法,您可以提取仅包含相关用户 ID 的列表,然后使用该Userinfo
列表根据该列表过滤 s,如下所示:
chosen_id = 3
user_ids = Postreply.objects.filter(postuid=chosen_id).values_list('useruid')
users = Userinfo.objects.filter(userid__in=user_ids)
推荐阅读
- javascript - 如何在 Symfony 中遍历 POST
- python - cron 作业来运行 python 脚本
- html - CSS“inline-block”值不适用于图像
- jq - jq:无法使用字符串“0”索引数组
- angular - Angular 4 是否支持 PWA
- c - 在按位运算期间检测到堆栈粉碎
- excel - 如何减少格式化多个表格的重复次数?
- wordpress - 为什么我的侧边栏模块(带有用于产品过滤的小部件)在 wordpress divi builder 中没有过滤我的商店模块
- python - 在使用 python selenium 单击查看联系人后,我无法获取相同的检查输出
- jsf - 为什么updateActionListener在commandButton的actionListener之前执行?