【发布时间】:2019-05-18 13:29:27
【问题描述】:
在 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()
我所做的一切似乎都无法阻止用户为自己创建贷款并进行编辑!
【问题讨论】:
-
请修正您的代码格式(编辑器中的
{}按钮)。你必须自己编写这样的功能,这不是管理员的工作方式。 -
不是完全重复,但我昨天回答了一个类似的问题,我想你会发现它很有用:stackoverflow.com/questions/56191534/…
标签: django django-models django-managers