Python Django-ForeignKey-如何正确使用它?
我有以下DB模型: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
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'