我希望获得用户上传到数据库中的对象数量。例如:
假设我有一个名为“Link”的模型(它将带有标题和描述的网址添加到我的models.py中:
class Link(models.Model):
user = models.ForeignKey(User)
title = models.CharField(max_length=200)
link = models.URLField(max_length=200)
description = models.TextField()
形式为:
class UrlForm(ModelForm):
class Meta:
model = Link
它的观点:
def linkurl(request):
form = UrlForm()
if request.method == 'POST':
form = UrlForm(data=request.POST, instance=Link())
if form.is_valid():
form.instance.user = request.user
form.save()
return redirect("home")
else:
form = UrlForm()
return render(request, "addurl.html", {'form': form})
因此,知道用户可以在我的应用中添加网址,我希望打印用户上传到我的应用中的网址数量。这有可能吗? 提前谢谢你。
答案 0 :(得分:2)
使用filter
和count
:
# change request.user to user id or user instance you need
user_links_count = Link.objects.filter(user=request.user).count()
答案 1 :(得分:1)
有多种方法可以实现这一目标。
user_links_count = Link.objects.filter(user=request.user).count() render(request, "addurl.html", {'form': form, linkscount: user_links_count})
@property def user_links_count(self): try: return self.objects.filter(user=self.user).count() except: return 0 #or any error message you want
现在,在您的模板中,您可以直接通过您使用的表单访问您的链接模型。假设您没有使用空模型:
{{ form._meta.model.user_links_count }}
但是我建议使用ndpu的解决方案来实现一次性解决方案。如果您经常需要此功能,请考虑对模型进行增强