Django - 使用属性过滤外键

Django - filtering on foreign key usin an attribut

我有 2 个外键,一个来自用户,另一个来自设备。

class checkn(models.Model):
    user = models.ForeignKey(User, null=True,on_delete= models.SET_NULL)
    devices = models.ForeignKey(Device, null=True,on_delete= models.SET_NULL)
    date_created = models.DateTimeField(auto_now_add=True, null=True)
    ch = models.CharField(max_length=1000, null=True)

他正在使用设备 ID 进行搜索,我想使用 IP 地址:

这是设备型号:

class Device(models.Model):
    hostname = models.CharField(max_length=200, null=True)
    password = models.CharField(max_length=200, null=True)
    type = models.CharField(max_length=200,choices=dtype, null=True)
    ipadress = models.CharField(max_length=200, null=True)
    date_created = models.DateTimeField(auto_now_add=True, null=True)

有什么建议吗?

如果您希望 ip 地址显示在搜索字段中,请执行

class Device(models.Model):
   ...
   def __str__(self):
      return self.ipaddress

您可以像这样使用过滤器

query = checkn.objects.filter(devices__ipadress=user_input_ipadress_here)

所以如果你想访问一些 ForeignKeys 属性,你可以像这样用双下划线将它分开:

ModelAttributeName__AttributeName