模型对象过滤不起作用

时间:2013-04-17 11:12:01

标签: django django-models django-admin

我尝试使用以下函数在Circuit模型类的管理类中过滤外键字段的对象:

def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == "current_firmware":
            kwargs["queryset"] = FirmwareVersion.objects.filter(firmware__circuit_model=self.model)
        return super(CircuitAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)

我无法弄清楚原因,但是过滤后字段current_firmware的选项列表为空。也许任何人都可以帮助我。 我有这些课程:

class FirmwareVersion(models.Model):
    firmware = models.ForeignKey(Firmware)
    version = models.CharField(max_length=100)

class Firmware(models.Model):
    name = models.CharField(max_length=250)
    circuit_model = models.ForeignKey(Versiiplates)

class Versiiplates (Model):
     version = ForeignKey(Plates)
     nomer_oboznachenie = CharField(max_length=8)

class Circuit(models.Model):
    circuit_id = models.PositiveIntegerField(blank=True, null=True)
    model = models.ForeignKey(Versiiplates)
    current_firmware = models.ForeignKey(FirmwareVersion, blank=True, null=True)

1 个答案:

答案 0 :(得分:0)

我怀疑你想在你的过滤器表达式中使用self.model:在ModelAdmin对象中,它只引用模型类,而不是实例。

事实上,这根本不是进行这种过滤的方法。您可能需要定义自定义模型表单,并使用formfield_for_foreignkey作为比较来设置查询集,而不是定义self.instance