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!
Top comments (0)