python - 如何限制 django-taggit 中允许的标签数量?
问题描述
我正在使用 django-taggit 模块在我的网站上标记帖子,但是我想将允许的标签数量限制为 3。我已阅读文档,但一无所获。
这是我的帖子模型
class Post(models.Model):
author = models.ForeignKey(User,related_name='posts',on_delete=models.CASCADE)
title = models.CharField(max_length=75)
text = models.TextField()
#... other fields here
tags = TaggableManager()
def __str__(self):
return self.title
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
现在这里是意见
class PostListView(SelectRelatedMixin,TagMixin,ListView):
model = Post
hit_count = True
template_name = 'mainapp/post_list.html'
selected_related = ("user","group")
paginate_by = 10
context_object_name = 'posts'
queryset = models.Post.objects.all()
def get(self,request,):
posts = Post.objects.all().order_by('-published_date')
users = User.objects.exclude(id=request.user.id)
count= User.objects.all().count()
friend, created = Friend.objects.get_or_create(current_user=request.user)
friends = friend.users.all()
group = Group.objects.all()
args = {
'users':users, 'friends':friends, 'posts':posts, 'group':group,'count':count
}
return render(request, self.template_name, args)
def get_queryset(self):
return Post.objects.filter(published_date__lte=timezone.now()).order_by('-published_date')
这是表格
class PostForm(forms.ModelForm):
class Meta():
model = Post
fields = ['title','text','group','image','file','tags','spoiler','NSFW']
widgets = {
'title':forms.TextInput(attrs={'class':'textinputclass'}),
'text':forms.Textarea(attrs={'class':'textareaclass editable'}),
}
def __init__(self, *args, **kwargs):
super(PostForm, self).__init__(*args, **kwargs)
self.fields['image'].required = False
self.fields['file'].required = False
所以我想知道如何限制用户可以为帖子输入的标签数量
解决方案
class PostForm(forms.ModelForm):
...
def clean_tags(self):
tn = self.cleaned_data.get('tags', [])
if len(tn) > 3:
raise ValidationError('Invalid number of tags', code='invalid')
...
更多信息:https ://docs.djangoproject.com/en/2.2/ref/forms/validation/
推荐阅读
- php - 学说:同一个属性可以与两个不同的目标属性建立关系吗?
- github - 根据其他拉取请求状态更新拉取请求芯片/表情符号
- sql - 提取每个字符串的第一个结果,返回每个字符串的两条记录
- amazon-web-services - @aws/dynamodb-data-mapper:如何在 QueryOptions 过滤区域中编写 ConditionExpression?
- javascript - 如何将百里香中的javascript外部化为片段?
- docker - docker build with WSL2 - 无法创建 LLB 定义:意外状态代码 403 Forbidden
- rust - 在 rust 中使用未声明的 crate 或模块
- sql-server - 数据库中不会发生的数据工具项目不明确的引用错误
- azure - arm 模板中的 microsoft.insights/components/ProactiveDetectionConfigs 强制进行多次部署
- sql - 从输出中删除 RANK() 列