【问题标题】:Related Field got invalid lookup: icontains - Django 2.1相关字段查找无效:​​icontains - Django 2.1
【发布时间】:2019-07-31 01:30:06
【问题描述】:

我正在尝试在我的管理页面中使“vanKit”字段可搜索。 “vanKit”是一个 ForeignKey,每当我将它添加到我的 search_fields 列表时,它都会给我这个错误“相关字段的查找无效:​​icontains”。这是我的代码:

模型.py

class KitSupplies(models.Model):
    supplyName = models.ForeignKey(supplies, on_delete=models.CASCADE)
    vanKit = models.ForeignKey(van_kit, on_delete=models.CASCADE)
    quantity = models.PositiveSmallIntegerField(blank=False)
    def __str__(self):
        return str(self.supplyName)
    class Meta:
        verbose_name_plural = 'Kit Supplies'

admin.py

class KitSuppliesAdmin(admin.ModelAdmin):
    list_display = ('supplyName', 'vanKit', 'quantity')
    search_fields = ['vanKit']

admin.site.register(KitSupplies, KitSuppliesAdmin)

我尝试使用search_fields = ['vanKit__name'],就像建议的其他堆栈溢出答案一样,但这对我不起作用。谁能解释我为什么会收到这个错误以及如何解决它?我正在使用 Django 2.1 和 python 3.7。提前致谢!

【问题讨论】:

  • vanKit 模型是什么样的?你确定VanKit.name 是一个字符串字段吗?
  • van_kitsupplies 是你的班级名称吗?为什么不是 VanKitSupply?见:docs.python-guide.org/writing/style
  • vanKit 是 van_kit 的外键。货车套件的名称由 van_kit 类中的“van_kit_name = models.CharField(max_length=100)”指定
  • 我也会进行这些更改以更正类名

标签: django python-3.x django-models


【解决方案1】:

所以我想通了,我必须使用“search_fields = ['vanKit__van_kit_name']” van_kit_name 是包含“vanKit”通过外键关联的 van_kit 模型中的货车套件名称的字段。我必须访问在实际 van_kit 模型中保存 van kit 名称的 Char 字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多