This content originally appeared on DEV Community and was authored by Joe ???????
To track finances, we need two main data types—categories (like “Food”) and transactions (money in or out).
1. Plan Your Models
- Category: e.g. Food, Rent, Salary
- Transaction: amount, date, category, type, notes
2. Code the Models
Edit tracker/models.py
:
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=50, unique=True)
def __str__(self):
return self.name
class Transaction(models.Model):
INCOME = 'IN'
EXPENSE = 'EX'
TRANSACTION_TYPES = [
(INCOME, 'Income'),
(EXPENSE, 'Expense'),
]
category = models.ForeignKey(Category, on_delete=models.CASCADE)
amount = models.DecimalField(max_digits=10, decimal_places=2)
date = models.DateField()
transaction_type = models.CharField(max_length=2, choices=TRANSACTION_TYPES)
notes = models.TextField(blank=True)
def __str__(self):
return f"{self.get_transaction_type_display()} - {self.category.name}: {self.amount} on {self.date}"
3. Why This Structure?
- ForeignKey connects transactions to categories
- Choices enforce transaction type
Let’s turn these models into database tables next!
This content originally appeared on DEV Community and was authored by Joe ???????