0

我尝试在电路模型类的管理类中过滤外键字段的对象:

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)
4

1 回答 1

0

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

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

于 2013-04-17T12:17:50.300 回答