我们说我有以下Django模型:
class X(models.Model):
some_field = models.FloatField()
class Y(models.Model):
x = models.ForeignKey(X)
another_field = models.DateField()
让我们说我正在寻找具有特定日期(lookup_date)的y的特定实例,属于某个x。如果有的话,哪个选项更有效?:
1。 Y.objects.get(x = x,another_field = lookup_date)
或使用相关经理:
2。 x.y_set.get(another_field = lookup_date)
答案 0 :(得分:2)
您可能会发现它们生成相同的查询,您可以通过在查询末尾添加.query
来检查,这将显示生成的sql。
Y.objects.get(x=x, another_field=lookup_date).query
x.y_set.get(another_field=lookup_date).query
但无论哪种方式,这都是微观优化,您可能会发现阅读Eric Lippert's performance rant很有意思。
其中一个被认为是更加pythonic?
不是真的,我倾向于使用第二种,因为它可以使它更容易符合pep8的线长标准