В Django у меня есть модель под названием Loans.Я хочу, чтобы пользователи могли редактировать кредит, созданный кем-то другим, но не в том случае, если они сами его создали.
В качестве бонуса я бы хотел, чтобы сотрудники не могли редактировать кредиты, принадлежащие другому персоналу..
Как я могу это сделать?Я действительно понятия не имею,.Я попытался создать пользовательскую проверку, а затем попробовал менеджер, подобный этому:
from django.db import models
from django.core.validators import MaxValueValidator, MinValueValidator
from core.models import User
class LoanManager(models.Manager):
def create_loan(self, request, borrower, approved, start_date, term_in_months, principal, interest_rate_pa, **extra_fields):
"""Creates and saves a new loan"""
print('USER========================================', request.user)
if borrower != request.user:
raise ValueError("Staff may not lend to themselves or other staff")
return super(LoanManager, self).create(borrower=borrower, approved=approved, start_date=start_date, term_in_months=term_in_months, principal=principal, interest_rate_pa=interest_rate_pa,**extra_fields)
class Loans(models.Model):
borrower = models.ForeignKey(User, on_delete=models.CASCADE)
approved = models.BooleanField(default=False)
start_date = models.DateField(auto_now_add=True)
term_in_months = models.IntegerField(validators=[
MaxValueValidator(360),
MinValueValidator(24)
])
principal = models.IntegerField(validators=[
MaxValueValidator(1000000),
MinValueValidator(2000)
])
interest_rate_pa = models.DecimalField(max_digits=5, decimal_places=2)
objects = LoanManager()
Ничто из того, что я делаю, не мешает пользователям создавать кредиты для себя и редактировать их!