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
我有 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