Django管理员双重过滤反向外键查找

时间:2015-07-07 16:27:03

标签: python django django-admin django-admin-filters

我试图在管理表单中反向查找两个不同的字段,彼此的父母一个。我的想法是,我有以下层次结构的下拉菜单。

  

     

Linea(按区域过滤)Fk = Area

     

传感器(由Linea过滤)Fk = Linea。

     

添加传感器详细信息。

现在我尝试通过为外键添加自我重复过滤器然后创建ModelAdmin来修改ModelForm以添加传感器。像这样:

class SensorForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(SensorAsignado, self).__init__(*args, **kwargs)
        self.fields['Linea'].queryset = Linea.objects.filter(no_de_linea = self.instance.linea)
        self.fields['Area'].queryset = Area.objects.filter(Linea.objects.filter(no_de_linea = self.instance.linea))

class SensorAdmin(admin.ModelAdmin):
    form = SensorForm

我们的想法是有两个字段,Linea和area,Linea按区域过滤,传感器按Linea过滤。

这是模型的片段:

class Area(models.Model):
    area_nom = models.CharField(max_length = 20)
    description = models.TextField()

    def __str__(self):
        return self.area_nom

# rack del cual fue sacada la pieza    
class Linea(models.Model):
    linea_nom = models.CharField(max_length = 20)
    area = models.ForeignKey('Area')
    description = models.TextField()

    def __str__(self):
        return self.linea_nom

# sensor del cual se sacó la lectura
class SensorAsignado(models.Model):
    sensor_nom = models.CharField(max_length = 20)
    linea = models.ForeignKey('Linea')
    sensor_tipo = models.ForeignKey('TipoDeSensor')

    def __str__(self):
        return self.sensor_nom

非常感谢,希望大家度过愉快的一天。

0 个答案:

没有答案