Modified the models to link the categories to the user
This commit is contained in:
parent
b46b00eab1
commit
64b68cb4b9
@ -1,7 +1,17 @@
|
||||
from django import forms
|
||||
from .models import Expense
|
||||
from .models import Expense, Category
|
||||
|
||||
class ExpenseForm(forms.ModelForm):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
# Get user
|
||||
user = kwargs.pop('user', None)
|
||||
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
if user:
|
||||
self.fields['category'].queryset = Category.objects.filter(owner=user)
|
||||
|
||||
class Meta:
|
||||
model = Expense
|
||||
fields = [
|
||||
|
||||
@ -4,8 +4,14 @@ from django.db.models.fields import related
|
||||
|
||||
class Category(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
owner = models.ForeignKey(
|
||||
settings.AUTH_USER_MODEL,
|
||||
on_delete=models.CASCADE,
|
||||
related_name="categories",
|
||||
)
|
||||
|
||||
parent = models.ForeignKey(
|
||||
"self",
|
||||
'self',
|
||||
on_delete=models.CASCADE,
|
||||
null=True,
|
||||
blank=True,
|
||||
@ -13,7 +19,7 @@ class Category(models.Model):
|
||||
)
|
||||
|
||||
class Meta:
|
||||
unique_together = ("name", "parent")
|
||||
unique_together = ("name", "parent", "owner")
|
||||
verbose_name_plural = "categories"
|
||||
|
||||
def __str__(self):
|
||||
@ -60,9 +66,7 @@ class Expense(models.Model):
|
||||
|
||||
category = models.ForeignKey(
|
||||
Category,
|
||||
on_delete=models.SET_NULL,
|
||||
null=True,
|
||||
blank=True,
|
||||
on_delete=models.PROTECT,
|
||||
related_name="expenses",
|
||||
)
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
from .models import Expense
|
||||
from .forms import ExpenseForm
|
||||
from django.contrib.auth import login
|
||||
from django.utils.ipv6 import is_valid_ipv6_address
|
||||
from . models import Expense
|
||||
from .forms import ExpenseForm
|
||||
|
||||
from django.shortcuts import get_object_or_404, render, redirect
|
||||
from django.contrib.auth.decorators import login_required
|
||||
@ -20,7 +20,7 @@ def expense_list(request):
|
||||
@login_required
|
||||
def expense_create(request):
|
||||
if request.method == "POST":
|
||||
form = ExpenseForm(request.POST)
|
||||
form = ExpenseForm(request.POST or None, user=request.user)
|
||||
if form.is_valid():
|
||||
expense = form.save(commit=False)
|
||||
expense.owner = request.user
|
||||
@ -28,7 +28,7 @@ def expense_create(request):
|
||||
form.save_m2m()
|
||||
return redirect('expense_list')
|
||||
else:
|
||||
form = ExpenseForm()
|
||||
form = ExpenseForm(user=request.user)
|
||||
|
||||
return render(
|
||||
request,
|
||||
@ -45,12 +45,12 @@ def expense_edit(request, pk):
|
||||
owner=request.user,
|
||||
)
|
||||
if request.method == "POST":
|
||||
form = ExpenseForm(request.POST, instance=expense)
|
||||
form = ExpenseForm(request.POST or None, instance=expense, user=request.user)
|
||||
if form.is_valid():
|
||||
expense = form.save()
|
||||
return redirect('expense_list')
|
||||
else:
|
||||
form = ExpenseForm(instance=expense)
|
||||
form = ExpenseForm(instance=expense, user=request.user)
|
||||
|
||||
return render(
|
||||
request,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user