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 django import forms
|
||||||
from .models import Expense
|
from .models import Expense, Category
|
||||||
|
|
||||||
class ExpenseForm(forms.ModelForm):
|
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:
|
class Meta:
|
||||||
model = Expense
|
model = Expense
|
||||||
fields = [
|
fields = [
|
||||||
|
|||||||
@ -4,8 +4,14 @@ from django.db.models.fields import related
|
|||||||
|
|
||||||
class Category(models.Model):
|
class Category(models.Model):
|
||||||
name = models.CharField(max_length=100)
|
name = models.CharField(max_length=100)
|
||||||
|
owner = models.ForeignKey(
|
||||||
|
settings.AUTH_USER_MODEL,
|
||||||
|
on_delete=models.CASCADE,
|
||||||
|
related_name="categories",
|
||||||
|
)
|
||||||
|
|
||||||
parent = models.ForeignKey(
|
parent = models.ForeignKey(
|
||||||
"self",
|
'self',
|
||||||
on_delete=models.CASCADE,
|
on_delete=models.CASCADE,
|
||||||
null=True,
|
null=True,
|
||||||
blank=True,
|
blank=True,
|
||||||
@ -13,7 +19,7 @@ class Category(models.Model):
|
|||||||
)
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
unique_together = ("name", "parent")
|
unique_together = ("name", "parent", "owner")
|
||||||
verbose_name_plural = "categories"
|
verbose_name_plural = "categories"
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
@ -60,9 +66,7 @@ class Expense(models.Model):
|
|||||||
|
|
||||||
category = models.ForeignKey(
|
category = models.ForeignKey(
|
||||||
Category,
|
Category,
|
||||||
on_delete=models.SET_NULL,
|
on_delete=models.PROTECT,
|
||||||
null=True,
|
|
||||||
blank=True,
|
|
||||||
related_name="expenses",
|
related_name="expenses",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
from django.contrib.auth import login
|
|
||||||
from django.utils.ipv6 import is_valid_ipv6_address
|
|
||||||
from .models import Expense
|
from .models import Expense
|
||||||
from .forms import ExpenseForm
|
from .forms import ExpenseForm
|
||||||
|
from django.contrib.auth import login
|
||||||
|
from django.utils.ipv6 import is_valid_ipv6_address
|
||||||
|
|
||||||
from django.shortcuts import get_object_or_404, render, redirect
|
from django.shortcuts import get_object_or_404, render, redirect
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
@ -20,7 +20,7 @@ def expense_list(request):
|
|||||||
@login_required
|
@login_required
|
||||||
def expense_create(request):
|
def expense_create(request):
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
form = ExpenseForm(request.POST)
|
form = ExpenseForm(request.POST or None, user=request.user)
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
expense = form.save(commit=False)
|
expense = form.save(commit=False)
|
||||||
expense.owner = request.user
|
expense.owner = request.user
|
||||||
@ -28,7 +28,7 @@ def expense_create(request):
|
|||||||
form.save_m2m()
|
form.save_m2m()
|
||||||
return redirect('expense_list')
|
return redirect('expense_list')
|
||||||
else:
|
else:
|
||||||
form = ExpenseForm()
|
form = ExpenseForm(user=request.user)
|
||||||
|
|
||||||
return render(
|
return render(
|
||||||
request,
|
request,
|
||||||
@ -45,12 +45,12 @@ def expense_edit(request, pk):
|
|||||||
owner=request.user,
|
owner=request.user,
|
||||||
)
|
)
|
||||||
if request.method == "POST":
|
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():
|
if form.is_valid():
|
||||||
expense = form.save()
|
expense = form.save()
|
||||||
return redirect('expense_list')
|
return redirect('expense_list')
|
||||||
else:
|
else:
|
||||||
form = ExpenseForm(instance=expense)
|
form = ExpenseForm(instance=expense, user=request.user)
|
||||||
|
|
||||||
return render(
|
return render(
|
||||||
request,
|
request,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user