【问题标题】:Django - filtering on foreign key usin an attributDjango - 使用属性过滤外键
【发布时间】:2021-09-04 04:37:00
【问题描述】:

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

有什么建议吗?

【问题讨论】:

    标签: django django-models django-views django-filter django-filters


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      你可以使用这样的过滤器

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

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

      模型属性名__属性名

      【讨论】:

        猜你喜欢
        • 2010-12-31
        • 2017-02-04
        • 1970-01-01
        • 1970-01-01
        • 2022-09-26
        • 2014-09-15
        • 2011-01-23
        • 1970-01-01
        • 2020-09-07
        相关资源
        最近更新 更多