Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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 queryset许多和一个公司_Python_Django_Django Queryset - Fatal编程技术网

Python Django queryset许多和一个公司

Python Django queryset许多和一个公司,python,django,django-queryset,Python,Django,Django Queryset,我有这个模型 class Sitename(models.Model): #id = models.AutoField(primary_key=True) ## to be removed site = models.CharField() ## find values class Equipment(models.Model): #id = models.Aut

我有这个模型

class Sitename(models.Model): 
   #id              = models.AutoField(primary_key=True)  ## to be removed
    site            = models.CharField()                  ## find values

class Equipment(models.Model):
   #id              = models.AutoField(primary_key=True)  ## to be removed
    serialno        = models.CharField()                  ## known values

class RSL(models.Model): ##Radio Station License
   #id              = models.AutoField(primary_key=True)  ## to be removed
    sitename        = models.ForeignKey(Sitename)
    equipment       = models.ManyToManyField(Equipment)
我只知道
设备
序列号
,我想不出正确的查询集?
到目前为止,我知道如何查询外键

sn       = 'abc'

equip    = Equipment.objects.get(serialno=sn)
rsl      = RSL.objects.?????
sitename = Site.objects.get(pk=rsl.pk)

您知道设备序列号,所以请使用-

equip = Equipment.objects.get(serialno=sn)
由于您的RSL类的
设备
字段和
设备
类有很多关系,因此可能有多个RSL类对象与一个设备对象相关。要获取查询集,请使用-

rsl_queryset = equip.rsl_set.all()
(请通过检查
dir(equip)
中是否列出了装备对象,检查
rsl\u set
是否是装备对象的方法。查看您的模型,很可能是这样。顺便说一句,您可以通过在定义中添加相关的\u name=“name you want”将其更改为您想要的名称。 例如:-

device=models.ManyToManyField(设备,相关的\u name=“rsl\u对象”)

通过这种方式,您可以通过
rsl\u queryset=equip.rsl\u objects.all()
)访问它

现在您有了一个包含与装备对象相关的RSL对象的查询集。因此,对它们进行迭代以获得所需的值-

for rsl_object in rsl_queryset:
    print "site = " + rsl_object.sitename.site

RSL.objects.get(pk=1)
?“到目前为止,我知道如何查询外键。”-也许你应该看看“我不好,我不知道如何使用
\u集”
。Django自动生成ID字段。您不需要显式地定义它,除非您确实需要它。让您的模型定义简洁明了。我明白了。我会记住这一点。这已经解释清楚了。除了使用
\u set
之外,还添加了for循环。