Tudo bom pessoal.
Sou novato no Django e como forma de estudo estou tentando desenvolver um aplicação de controle de caixa simples para uso pessoal.
Minha duvida é a seguinte:
- Fazer com que o admin faça as operações em tempo real e as grave no banco.
Ex: quando eu colocar o produto e a quantidade ele informar de imediato os valores em um campo que não pode ser alterado pelo usuário.
model.py
<code>
from django.db import models
from django.utils import timezone
from cproduto.models import Produto
class VendaTotal(models.Model):
FORMA_PAGAMENTO = (
('D', 'Dinheiro'),
('C', 'Cartão'),
('N', 'Nota'),
)
tdata = models.DateTimeField('Data', default = timezone.now)
tforma_pagamento = models.CharField('Forma de Pagamento', max_length=1, choices=FORMA_PAGAMENTO, default='D')
tdesconto = models.DecimalField('Desconto', default=0, max_digits=6, decimal_places=2)
ttotal = models.DecimalField('Total', default=0, max_digits=6, decimal_places=2)
def __str__(self):
return str(self.tdata)
class VendaNew(models.Model):
codigo = models.ForeignKey(VendaTotal)
codigo2 = models.ForeignKey(Produto)
quantidade = models.IntegerField('Quantidade', default=0)
desconto = models.DecimalField('Desconto', default=0, max_digits=6, decimal_places=2)
total = models.DecimalField('Total', default=0, max_digits=6, decimal_places=2)
def __str__(self):
return str(self.codigo)
def get_total(self):
totals = (self.codigo2.preco_venda * self.quantidade - self.desconto)
self.total = totals
self.save()
return self.total
subtotal = property(get_total)
</code>
admin.py
<code>
from django.contrib import admin
from cvenda.models import *
class VendaNewAdmin(admin.TabularInline):
model = VendaNew
raw_id_fields = ('codigo2',)
extra = 0
readonly_fields = ['subtotal']
class VendaTotalAdmin(admin.ModelAdmin):
fieldsets = [
('Data', {'fields' : ['tdata']}),
('Forma de pagamento', {'fields' : ['tforma_pagamento']}),
('Desconto', {'fields' : ['tdesconto']}),
('Total', {'fields' : ['ttotal']}),
]
inlines = [VendaNewAdmin]
list_display = ('id', 'tdata', 'tforma_pagamento', 'tdesconto', 'ttotal')
admin.site.register(VendaTotal, VendaTotalAdmin)
</code>
Se alguém poder me orientar, agradeço.
Obrigado.