我意识到以前有人问过这个问题,但是我找不到真正涉及我正在尝试做的事情的问题。我认为这很简单,但我想知道普通民众认为这里最好的形式是什么。
假设我们有以下内容:
模型.py
class TestClass(models.Model):
user = models.ForeignKey(User)
testfield = models.CharField()
testbool = models.BooleanField(default=False)
def save(self, *args, **kwargs):
"""
- what we're trying to do here is ensure that the User doesn't have more than
X (lets say 5) related test fields.
- what if we also wanted to add validation to testfield to ensure it was
only [a-zA-Z]?
"""
if TestClass.objects.filter(user=self.user).count() >= 5:
# How do we exit gracefully?
return
super(TestClass, self).save(*args, **kwargs)
保存功能中的评论几乎总结了我的问题: - 我们如何确保给用户的相关 TestClass 不超过 5 个 - 如果已经有 5 个,我们如何优雅地退出保存(不保存) -我们如何将此报告给用户?- 我们在哪里验证 testfield 对象以确保它只有 [az]?我可以只导入 re 并在这里做吗?我应该吗?
最好把这一切都扔在这里吗?我应该触发 pre_save 信号吗?还是我应该只使用带有验证的 ModelForm?