Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.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_Django_Django Views_Django Queryset - Fatal编程技术网

Python Django外键查询

Python Django外键查询,python,django,django-views,django-queryset,Python,Django,Django Views,Django Queryset,在以下模型中: class header(models.Model): title = models.CharField(max_length = 255) created_by = models.CharField(max_length = 255) def __unicode__(self): return self.id() class criteria(models.Model): details = models.CharFiel

在以下模型中:

class header(models.Model):
    title = models.CharField(max_length = 255)
    created_by = models.CharField(max_length = 255)

    def __unicode__(self):
        return self.id()

class criteria(models.Model):
    details =   models.CharField(max_length = 255)
    headerid = models.ForeignKey(header)

    def __unicode__(self):
        return self.id()

class options(models.Model):
    opt_details =   models.CharField(max_length = 255)
    headerid = models.ForeignKey(header)

    def __unicode__(self):
        return self.id()
如果数据库中有一行表头为
Id=1,title=value-mart,createdby=CEO

如何查询条件和选项表以获取与标题表相关的所有值 id=1


也可以有人请建议一个好的链接查询的例子

首先,不要在名称中使用
id
,因为这很容易混淆。该字段不是ID,而是对象本身。(如果您有一个字段
ref
,它会自动创建一个字段
ref\u id


您可以像查询任何值一样查询它,其中某个头实例就是您正在筛选的值。

我建议尝试使用一种更像Django文档中的命名约定。更像这样:

class Header(models.Model):
    ...

class Criteria(models.Model):
    details = model.CharField(max_length=255)
    header = models.ForeignKey(Header)
然后根据需要查询:

# find Criteria for a given header
value_mart = Header.objects.get(id=1)

# ... via an instance of Header.
value_mart.criteria_set.all()

# ... or with a filter().
Criteria.objects.filter(header=value_mart)
Criteria.objects.filter(header_id=1)

本文件还提供了参考资料

Ironfroggy是对的,但是还有另一种更明显的方法可以获得相关的
选项
标准
对象。Django会自动为指向模型的每个外键创建一个“反向关系”,这通常是相关模型的名称加上
\u set
。因此:

mycriteria.options_set.all()
mycriteria.header_set.all()
将为您提供与
标准相关的所有
选项
标题
对象
对象
mycriteria

另外,还有一个关于样式的注意事项:正如ironfroggy指出的,您不应该在外键字段中使用
id
,还应该为模型类使用大写样式,这样您就可以看到类
标准
和特定实例
标准
之间的差异


就链接而言,这本书非常好,它解释了所有这些。

听起来像是你在寻找的

您可以获取要筛选的标题对象,并使用

obj = Header.objects.get(title="value-mart", "createdby=CEO")
obj.criteria_set.all()
有关更多详细信息,请参阅

obj = Header.objects.get(title="value-mart", "createdby=CEO")
obj.criteria_set.all()