Files
kakebo/app/expenses/models.py
Andros Fenollosa 19f4e84a30 Remove user FK from all models, add goals and promises
- Remove user ForeignKey from all 7 models (single-user app)
- Update all views, handlers, forms, admin, API, seed, and tests
- Add MonthlyGoal model with goals and promises sections
- Goals/promises: add, toggle (strikethrough), delete via LiveView
2026-03-18 15:18:50 +01:00

58 lines
1.3 KiB
Python

from django.db import models
class Category(models.Model):
name = models.CharField(max_length=100)
order = models.PositiveIntegerField(default=0)
class Meta:
ordering = ["order", "name"]
verbose_name_plural = "categories"
def __str__(self):
return self.name
class Subcategory(models.Model):
name = models.CharField(max_length=100)
category = models.ForeignKey(
Category, on_delete=models.CASCADE, related_name="subcategories"
)
order = models.PositiveIntegerField(default=0)
class Meta:
ordering = ["order", "name"]
verbose_name_plural = "subcategories"
def __str__(self):
return self.name
class FixedExpenseConcept(models.Model):
name = models.CharField(max_length=255)
order = models.PositiveIntegerField(default=0)
class Meta:
ordering = ["order", "name"]
def __str__(self):
return self.name
class Expense(models.Model):
concept = models.CharField(max_length=255)
amount = models.DecimalField(max_digits=10, decimal_places=2)
category = models.ForeignKey(
Category, on_delete=models.PROTECT, related_name="expenses"
)
subcategory = models.ForeignKey(
Subcategory, on_delete=models.PROTECT, related_name="expenses"
)
created_at = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ["-created_at"]
def __str__(self):
return f"{self.concept} - {self.amount}"