Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] duvidas sobre atribuição de valores

olá, estou com uma duvida em projeto que estou criando, o usuário deve preencher alguns dados e o preciso atribuir valore para variáveis que o usuário não ira digitar, por exemplo tenho um modelo pesoBruto, pesoLiquido e tara(o peso liquido resultara (pesoBruto-tara=pesoLiqudo), o usuário deve digitar o pesoBruto e tara e o sistema calcular e atribuir o valor do pesoLiquido na hora de gravar no banco, como fazer essa atribuição no valor do pesoLiquido?

1 resposta
solução!

Olá Eduardo, como você está?

Peço desculpas pela demora em obter um retorno.

Em um projeto Django, você pode realizar essa atribuição no momento de salvar o objeto no banco de dados. Para isso, você pode definir um método save() personalizado no modelo que contém as variáveis de peso_bruto, peso_liquido e tara.

Exemplo:

class Produto(models.Model):
    nome = models.CharField(max_length=100, null=False, blank=False)
    categoria = models.CharField(max_length=100, default='')
    peso_bruto = models.FloatField()
    tara = models.FloatField()
    peso_liquido = models.FloatField(null=True, blank=True)

    def save(self, *args, **kwargs):
        if self.peso_bruto and self.tara:
            self.peso_liquido = self.peso_bruto - self.tara
        super(Produto, self).save(*args, **kwargs)

No exemplo acima, o método save() primeiro verifica se as variáveis peso_bruto e tara estão preenchidas. Em seguida, ele realiza a operação de subtração e atribui o resultado à variável peso_liquido. Vale ressaltar que no exemplo acima, a variável peso_liquido é definida como null=True e blank=True. Isso permite que o campo seja nulo ou vazio, caso o usuário não preencha esses dados no formulário. Se você deseja que o campo seja obrigatório, basta remover esses parâmetros.

Resultado:

Gif demonstrando o funcionamento do código, onde o peso líquido é calculado automaticamente após clicar no botão salvar

Espero ter ajudado. Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!