models.py 1.5 KB

12345678910111213141516171819202122232425262728293031
  1. from django.core.exceptions import ValidationError
  2. from django.db import models
  3. from django.utils.translation import ugettext_lazy as _
  4. from django.contrib.auth import get_user_model
  5. from django.utils.timezone import now
  6. User = get_user_model()
  7. # Create your models here.
  8. def validate_type(value):
  9. if value not in ('inflow', 'outflow'):
  10. raise ValidationError(
  11. _('%(value)s is not an even number'),
  12. params={'value': value},
  13. )
  14. class Transaction(models.Model):
  15. user = models.ForeignKey(User,related_name='transactions', on_delete=models.CASCADE)
  16. reference = models.CharField(_('Transaction reference'), max_length=8, unique=True,
  17. help_text=_('Unique value'))
  18. account = models.CharField(_('Account'), max_length=8, help_text=_('Account Number'))
  19. type = models.CharField(_('Type'), max_length=8,
  20. choices=(('inflow', 'inflow'), ('outflow', 'outflow')),
  21. validators=[validate_type],
  22. help_text=_('Choice "outflow" or "inflow"'))
  23. amount = models.FloatField(_('Amount'), max_length=255,
  24. help_text=_('''Only negative numbers for "outflow" and
  25. positive numbers for "inflow"'''))
  26. category = models.CharField(_('Category'), max_length=255, help_text=_('Category Name'))
  27. date = models.DateField('Date',help_text=_('Transaction date. YYYY-MM-DD format.'))