Python 如何限制用户在django中保存数据库?
如何限制用户在db中保存对象Python 如何限制用户在django中保存数据库?,python,mysql,django,django-models,django-mysql,Python,Mysql,Django,Django Models,Django Mysql,如何限制用户在db中保存对象 class model_name(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True) user = models.ForeignKey(User) foo = models.CharField(max_length=51) 我想将foo限制为每个用户只能输入10个条目 我正在使用mysql作为后端你可以做的 class
class model_name(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True)
user = models.ForeignKey(User)
foo = models.CharField(max_length=51)
我想将foo限制为每个用户只能输入10个条目
我正在使用mysql作为后端你可以做的
class model_name(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True)
user = models.ForeignKey(User)
foo = models.CharField(max_length=51)
def save(self, *args, **kwargs):
if self.__class__.objects.filter(user=self.user).count()>=10:
return None
return super(model_name, self).save(*args, **kwargs)
#return super().save(*args, **kwargs) python3.x
如果您正在使用forms
,则可以通过更新Form.clean
方法来执行相同的操作
def clean(self):
super(MyForm, self).clean()
if model_name.objects.filter(user=self.cleaned_data['user']).count()>=10:
raise forms.ValidationError("You have exceeded limit.")
你能行
class model_name(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True)
user = models.ForeignKey(User)
foo = models.CharField(max_length=51)
def save(self, *args, **kwargs):
if self.__class__.objects.filter(user=self.user).count()>=10:
return None
return super(model_name, self).save(*args, **kwargs)
#return super().save(*args, **kwargs) python3.x
如果您正在使用forms
,则可以通过更新Form.clean
方法来执行相同的操作
def clean(self):
super(MyForm, self).clean()
if model_name.objects.filter(user=self.cleaned_data['user']).count()>=10:
raise forms.ValidationError("You have exceeded limit.")
如果您使用postgre作为后端数据库,您可以使用类似的东西。对于这些阵列,cou可以控制长度、内容等。我使用mysql作为后端是的,已经注意到了,我的缺点。也许你可以根据自己的需求等切换底层数据库。你总是可以选择执行代码,因此这对你来说也是一个有用的黑客。是否有任何方法可以在forms.py中进行验证如果你想在form.py中实现它,我想最直观的方法是在用户插入/更新foo之前检查db中foo的数量。如果记录数>10,则向用户响应错误消息。如果您使用postgre作为后端数据库,则可以使用以下内容。对于这些阵列,cou可以控制长度、内容等。我使用mysql作为后端是的,已经注意到了,我的缺点。也许你可以根据自己的需求等切换底层数据库。你总是可以选择执行代码,因此这对你来说也是一个有用的黑客。是否有任何方法可以在forms.py中进行验证如果你想在form.py中实现它,我想最直观的方法是在用户插入/更新foo之前检查db中foo的数量。如果记录数>10,则向用户响应错误消息。我已在表单中尝试,但它不会显示验证error@brunodesthuilliers是的,我的意思是:)。你在渲染表单吗?是管理员吗?我试过表单,但它不会显示验证error@brunodesthuilliers是的,我的意思是:)。你在渲染表单吗?是管理员吗?