Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无外键多表中的Django查询_Python_Mysql_Django - Fatal编程技术网

Python 无外键多表中的Django查询

Python 无外键多表中的Django查询,python,mysql,django,Python,Mysql,Django,我的模特看起来像这样 class Trans(models.Model): id = models.CharField(primary_key=True, max_length=60) sys = models.ManyToManyField(Sys) flag = models.CharField(max_length=15, blank=True, null=True) class Sys(models.Model): id = models.CharFie

我的模特看起来像这样

class Trans(models.Model):
    id = models.CharField(primary_key=True, max_length=60)
    sys = models.ManyToManyField(Sys)
    flag = models.CharField(max_length=15, blank=True, null=True)

class Sys(models.Model):
    id = models.CharField(primary_key=True, max_length=64)
    mid = models.CharField(max_length=15, blank=True, null=True)
    numbers = models.IntegerField(blank=True, null=True)
    org = models.CharField(max_length=100, blank=True, null=True)
{% for row in rowlist %}
    {{ row.mid }}  //in Trans
    {{ row.flag }}  //in Trans
    {{ row.org }}  //in Sys when mid=Trans.mid
    {{ row.numbers }}//in Sys when mid=Trans.mid
我想在Trans中的mid之前获得组织数字,并像这样在模板中使用它们

class Trans(models.Model):
    id = models.CharField(primary_key=True, max_length=60)
    sys = models.ManyToManyField(Sys)
    flag = models.CharField(max_length=15, blank=True, null=True)

class Sys(models.Model):
    id = models.CharField(primary_key=True, max_length=64)
    mid = models.CharField(max_length=15, blank=True, null=True)
    numbers = models.IntegerField(blank=True, null=True)
    org = models.CharField(max_length=100, blank=True, null=True)
{% for row in rowlist %}
    {{ row.mid }}  //in Trans
    {{ row.flag }}  //in Trans
    {{ row.org }}  //in Sys when mid=Trans.mid
    {{ row.numbers }}//in Sys when mid=Trans.mid
SQL应该是

SELECT Sys.numbers, Sys.org FROM Sys, Trans WHERE Trans.mid = Sys.mid
如何在Django中进行这样的查询? 我试过了

cursor.execute("SELECT * From trans, sys")
rowlist = cursor.fetchone()

它返回我所需要的,但却是一团乱麻

我不知道你为什么要这样做,但是,
我认为这可以解决你的问题:

mid_list = Trans.objects.values_list('mid', flat=True)
rowlist = Sys.objects.filter(mid__in=mid_list)
编辑1 现在,只需使用:

rowlist = TranSys.objects.values('sys__org', 'sys__numbers','sys__mid','trans__flag')

我不知道你为什么这么做,但是,
我认为这可以解决你的问题:

mid_list = Trans.objects.values_list('mid', flat=True)
rowlist = Sys.objects.filter(mid__in=mid_list)
编辑1 现在,只需使用:

rowlist = TranSys.objects.values('sys__org', 'sys__numbers','sys__mid','trans__flag')

我建议将其设置为外键,因为它应该是外键

你可以这样做

trans_mid = Trans.objects.values('mid')
syss = Sys.objects.filter(mid__in=trans_mid)

此外,您还可以使用来执行此类查询。

我建议将其设置为外键,因为它应该是外键

你可以这样做

trans_mid = Trans.objects.values('mid')
syss = Sys.objects.filter(mid__in=trans_mid)

此外,您还可以使用来执行此类查询。

如果您在
Sys
类中将mid作为
外键
,则更好。 所以你可以直接访问像

sys_list = Sys.objects.filter(
    mid__in=Trans.objects.values('mid')
).values('numbers', 'org')

如果您在
Sys
类中将mid作为
ForeignKey
的话,那就更好了。 所以你可以直接访问像

sys_list = Sys.objects.filter(
    mid__in=Trans.objects.values('mid')
).values('numbers', 'org')

你为什么没有钥匙?o_oI不能使用mid作为主键,因为它不是唯一的,如果我使用外键,我应该先在两个模型中设置索引吗?如果它不是唯一的,那么db可以在这些表之间建立多对多关系。那么,在django中可以有很多字段。为什么没有foreingkey?o_oI不能使用mid作为主键,因为它不是唯一的,如果我使用外键,我应该先在两个模型中设置索引吗?如果它不是唯一的,那么db可以在这些表之间建立多对多关系。因此,你可以在django中有一个多个字段。我已经将模型编辑为多个字段,但仍然不知道如何获取数字/组织我已经将模型编辑为多个字段,但仍然不知道如何获取数字/组织我再次编辑了它,对不起,我的问题不清楚。我想在mid之前获得Trans中的mid和flag以及Sys中的数字和组织。我在您的答案中看不到mid,谢谢it rowlist=TranSys.objects.values('Trans_u org'、'Trans_uNUMBERS'、'Trans_uFLAG'、'Sys_uMID'),我再次编辑了它,对不起,我的问题不清楚。我想在mid之前获得Trans中的mid和flag以及Sys中的数字和组织。我在您的答案中看不到mid,谢谢it rowlist=TranSys.objects.values('Trans_org'、'Trans_numbers'、'Trans_flag'、'Sys_mid'))