选择值和对象时,我的查询有问题。这是一个示例结构:
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值;我不能用它作为对象。
有没有办法可以选择某些列并将对象保存为对象?
答案 0 :(得分:2)
如果您想要租房者,您应该查询用户,而不是协议。
renters = User.objects.exclude(renter01=None)
(注意,将renter01
作为反向关系是没有意义的;除非你有充分的理由,否则你应该将它保留为默认值,即agreement_set
。)