Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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-ForeignKey-如何正确使用它?_Python_Django_Django Models - Fatal编程技术网

Python Django-ForeignKey-如何正确使用它?

Python Django-ForeignKey-如何正确使用它?,python,django,django-models,Python,Django,Django Models,我有以下DB模型: class Table1( models.Model ): sctg = models.CharField(max_length=100, verbose_name="Sctg") emailAddress = models.CharField(max_length=100, verbose_name="Email Address", default='') def __unicode__(self): return s

我有以下DB模型:

class Table1( models.Model ):       
    sctg = models.CharField(max_length=100, verbose_name="Sctg")
    emailAddress = models.CharField(max_length=100, verbose_name="Email Address", default='')

    def __unicode__(self):
        return str( self.sctg )


class Table2( models.Model ):

    sctg = models.ForeignKey( Table1 )
    street = models.CharField(max_length=100, verbose_name="Street")
    zipCode = models.CharField(max_length=100, verbose_name="Zip Code")

    def __unicode__(self):
        return str( self.sctg )
我想执行select查询。 这就是我所做的:

sctg = Table1.objects.get( sctg = self.sctg )
data = Table2.objects.get( sctg = sctg  )
它是有效的,但现在我要执行2个查询。是否只有一次机会做到这一点?在原始SQL中,我会执行连接查询,但不知道如何在Django模型中执行此操作。

您可以使用两个连续的下划线“通过”一个
ForeignKey
引用。因此,您的查询相当于:

Table2.objects.get(sctg__sctg=self.sctg)

其中,
'mysctg'
是存储在你
self.sctg

中的值,不,
self.sctg
已经是对
Table1
对象的惰性引用,如果你真的想非常快地完成,你可以使用
sctg\u id
。但是如果我理解的话,你的
self.sctg
是一个字符串吗?@Willem,是的,self.sctg是一个string@das-是的,对不起,我是说外键,你能提供一个正确用法的例子吗?
SELECT t2.*
FROM table2 AS t2
INNER JOIN table1 AS t1 ON t2.sctg = t1.id
WHERE t1.sctg = 'mysctg'