设置
models.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
字段过滤postuid
表格
并在fitered postreply中通过useruid获取userinfo
实例
如果是postinfo ex)
postuid =3
postreply ex)
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
userinfo ex)
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'
如何做到这一点
答案 0 :(得分:0)
通过使用values_list
方法,您只提取相关用户ID的列表,然后使用该列表根据该列表过滤Userinfo
,如下所示:
chosen_id = 3
user_ids = Postreply.objects.filter(postuid=chosen_id).values_list('useruid')
users = Userinfo.objects.filter(userid__in=user_ids)