forms.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from django import forms
  2. from .models import Dividendo, Operacion, Valor
  3. class BootstrapFormMixin:
  4. """Aplica la clase form-control de Bootstrap a todos los campos."""
  5. def __init__(self, *args, **kwargs):
  6. super().__init__(*args, **kwargs)
  7. for field in self.fields.values():
  8. css = field.widget.attrs.get('class', '')
  9. field.widget.attrs['class'] = f'{css} form-control'.strip()
  10. class ValorForm(BootstrapFormMixin, forms.ModelForm):
  11. class Meta:
  12. model = Valor
  13. fields = ['ticker', 'nombre', 'mercado', 'isin']
  14. def __init__(self, *args, **kwargs):
  15. super().__init__(*args, **kwargs)
  16. self.fields['ticker'].widget.attrs['placeholder'] = 'p. ej. SAN.MC'
  17. class OperacionForm(BootstrapFormMixin, forms.ModelForm):
  18. class Meta:
  19. model = Operacion
  20. fields = ['valor', 'tipo', 'fecha', 'cantidad', 'precio', 'comisiones']
  21. widgets = {
  22. 'fecha': forms.DateInput(attrs={'type': 'date'}),
  23. }
  24. class DividendoForm(BootstrapFormMixin, forms.ModelForm):
  25. class Meta:
  26. model = Dividendo
  27. fields = ['valor', 'fecha', 'bruto', 'retencion']
  28. widgets = {
  29. 'fecha': forms.DateInput(attrs={'type': 'date'}),
  30. }