我正在尝试获取查询集,但它没有显示任何内容。基本上,我想将通过外键分配的Asset对象获取给员工,该员工是已登录用户的外键。
views.py
def get_queryset(self):
assetlist = Asset.objects.filter(organisation__employee__user=self.request.user)
print(assetlist)
return assetlist
models.py
class Employee(models.Model):
name = models.CharField("Employee Name", max_length=50, blank=False)
email = models.CharField("Employee Email", max_length=50, blank=True)
user = models.ForeignKey(User)
clientID = models.ForeignKey(Organisation)
def save(self):
self.name = self.user.get_full_name()
self.email = self.user.email
super(Employee, self).save()
def __str__(self):
return self.name
class Asset(models.Model):
name = models.CharField("Asset Name", max_length=30, primary_key=True)
organisation = models.ForeignKey(Organisation)
def __str__(self):
return self.name
class Organisation(models.Model):
name = models.CharField("Organisation Name", max_length=50, blank=False)
location = models.TextField("Organisation Address", max_length=200, blank=True)
tel = models.CharField("Telephone Number", max_length=20)
def __str__(self):
return self.name
答案 0 :(得分:0)
答案是从另一个模型接近,如下所示:
assetlist = Sensor.objects.filter(asset__organisation__employee__user=self.request.user)
答案 1 :(得分:-1)
组织内没有employee
字段。这是一个相反的关系,附加了许多员工,所以你不能这样查询。
但是在django外键中有一些名为related_name
的东西,使用它,你的查询应该是这样的:
assetlist = Asset.objects.filter(organisation__employee_set__user=self.request.user)
或者如果您将自己的related_name指定为employee - >组织关系:
clientID = models.ForeignKey(Organisation, related_name="employees")
它看起来像这样:
assetlist = Asset.objects.filter(organisation__employees__user=self.request.user)
答案 2 :(得分:-1)
你写错了代码。您希望使用Asset
对象:
assetlist = Asset.objects.filter(organisation__employee__user=self.request.user)
但是你明显可以在models.py中看到Organisation
和Employee
之间没有关系,那么如何使用organisation__employee...
获得结果?
您应首先创建一个与ForeignKey
模型相关联的Employee
字段,然后您的代码才能正常运行。