Django查询选择值和对象

时间:2018-03-21 09:59:59

标签: python django

选择值和对象时,我的查询有问题。这是一个示例结构:

class Property(models.Model):
   name = models.CharField(max_length=70,  blank=True, verbose_name="Property Name")
   type = models.CharField(max_length=10)

class Agreement(models.Model):
    property = models.ForeignKey(Property, on_delete=models.CASCADE, related_name="prop")
    renter = models.ForeignKey(User, verbose_name="Kiracı", related_name = "renter01")

这是第一个过滤器。

 qs1 = Agreement.objects.all()

这个返回属性和租用者作为对象。所以我可以参考对象细节,如

for q in qs:
   print(q.renter.firstname)

这是第二个过滤器。
当我只需要一些字段时,我会使用这个过滤器:

qs2 = Agreement.objects.all().values('renter',...)

在这种情况下,查询返回租用者用户的pk值;我不能用它作为对象。

有没有办法可以选择某些列并将对象保存为对象?

1 个答案:

答案 0 :(得分:2)

如果您想要租房者,您应该查询用户,而不是协议。

renters = User.objects.exclude(renter01=None)

(注意,将renter01作为反向关系是没有意义的;除非你有充分的理由,否则你应该将它保留为默认值,即agreement_set。)