Hola amigos.
Siento no escribir en ingles como es el estándar.
Tratare de ser breve. Tengo un caso en el cual tengo una tabla Bomba , una CorteBomba y el detalle de esta misma DetCorteBomba.
Sucede que tengo en la tabla DetCorteBomba una foreingkey llamada id_producto que enlaza con la tabla Productos.
Necesito obtener el id_establecimiento en la tabla bombas y ponerlo como filtro usando limit_choices_to en el campo id_establecimiento para filtrar los productos del establecimiento al que esta ligado la bomba dejo un ejemplo de lo que intento conseguir.
class Bomba(models.Model):
id = models.AutoField(primary_key=True)
id_pais = models.ForeignKey(Pais,on_delete=models.CASCADE,verbose_name='Codigo de Pais')
id_empresa = ChainedForeignKey(
Empresa,
chained_field="id_pais",
chained_model_field="id_pais",
show_all=False,
auto_choose=True,
sort=True)
id_establecimiento = ChainedForeignKey(
Establecimiento,
chained_field="id_empresa",
chained_model_field="id_empresa",
show_all=False,
auto_choose=True,
sort=True)
numero = models.IntegerField(verbose_name='Numero de Bomba:')
descripcion = models.CharField(max_length=50)
acum_importe = models.BooleanField(default=True)
autoservicio = models.BooleanField(default=True)
notas = models.CharField(max_length=100, null=True )
class Meta:
verbose_name = ('Bomba')
verbose_name_plural = ('Bombas')
def __str__(self) -> str:
return "{}".format(self.numero)
class ProductoBomba (models.Model):
id = models.AutoField(primary_key=True)
id_pais = models.ForeignKey(Pais,on_delete=models.CASCADE,verbose_name='Codigo de Pais')
id_empresa = ChainedForeignKey(
Empresa,
chained_field="id_pais",
chained_model_field="id_pais",
show_all=False,
auto_choose=True,
sort=True)
id_establecimiento = ChainedForeignKey(
Establecimiento,
chained_field="id_empresa",
chained_model_field="id_empresa",
show_all=False,
auto_choose=True,
sort=True)
id_bomba = ChainedForeignKey(
Bomba,
chained_field="id_establecimiento",
chained_model_field="id_establecimiento",
show_all=False,
auto_choose=True,
sort=True)
id_producto = ChainedForeignKey(
Producto,
chained_field="id_establecimiento",
chained_model_field="id_establecimiento",
show_all=False,
auto_choose=True,
sort=True)
activo = models.BooleanField(default=True)
class Meta:
verbose_name = ('Producto Bomba')
verbose_name_plural = ('Productos Bombas')
def __str__(self) -> str:
return "{}".format(self.id)
class CorteBomba(models.Model):
id = models.AutoField(primary_key=True)
id_bomba = models.ForeignKey(Bomba, verbose_name=("Bomba:"), on_delete=models.CASCADE)
fecha= models.DateField(default=timezone.now())
importe_acum = models.FloatField()
consumo_acum = models.FloatField()
nota = models.CharField( max_length=50)
cerrado = models.BooleanField()
class Meta:
verbose_name = ('Corte Bomba')
verbose_name_plural = ('Cortes Bombas')
def __str__(self) -> str:
return "{}".format(self.fecha)
class DetCorteBomba(models.Model):
def esta(obj):
#object.id_corte.id_bomba.id_establecimiento.id
#esta = DetCorteBomba.objects.all()
estbomba = obj.id_corte.id_bomba.id_establecimiento.value
return {"id_establecimiento": estbomba}
def idesta():
ides = DetCorteBomba.esta(DetCorteBomba)
return ides
id = models.AutoField(primary_key=True)
id_corte = models.ForeignKey(CorteBomba,on_delete=models.CASCADE)
id_producto = models.ForeignKey(Producto,
on_delete=models.CASCADE,
related_name='producto',
limit_choices_to= idesta )
importe_ini = models.FloatField()
consumo_ini = models.FloatField()
importe = models.FloatField()
consumo = models.FloatField()
calibracion = models.FloatField()
traslado = models.FloatField()
precio = models.FloatField()
class Meta:
verbose_name =('Detalle Corte')
verbose_name_plural = ('Detalles Cortes')
def __str__(self) -> str:
return "{}".format(self.id)
El error que me da es el siguiente