擅长:python、mysql、java
<p>我不知道有什么模块可以现成地为您实现这一点(虽然其他人可能会这样做),但使用这样的工具应该相对容易实现:</p>
<pre><code>from django.core.exceptions import ValidationError
from django.db import models
class BlogPost(models.Model):
user_profile = models.ForeignKey('module.UserProfile')
def clean(self):
numPosts = BlogPost.objects.filter(user_profile=self.user_profile).count()
if numPosts > self.user_profile.max_posts:
raise ValidationError("Your user plan does not support more than {} posts".format(numPosts))
</code></pre>
<p>这假设您在某处有一个<code>UserProfile</code>模型,该模型存储了用户的最大帖子数。它可能在你的应用程序中看起来不一样,所以使用它只是为了让你开始。。。在</p>
<p>请注意,通过重写<code>clean()</code>方法(<a href="https://docs.djangoproject.com/en/1.11/ref/models/instances/#django.db.models.Model.clean" rel="nofollow noreferrer">https://docs.djangoproject.com/en/1.11/ref/models/instances/#django.db.models.Model.clean</a>),您可以利用Django的验证错误,但如果您在代码库的某个地方手动调用<code>instance.save()</code>,则不会执行该方法。为此,您还需要向<code>save()</code>方法添加逻辑。在</p>