Django1.6:如何打印用户上传的对象数?

2024-09-24 22:20:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我想得到一个用户上传到数据库的对象数。例如:

假设我有一个名为“Link”的模型(它添加了一个带有标题和描述的url)型号.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})

因此,知道用户可以添加网址到我的应用程序,我期待着打印的网址,用户上传到我的应用程序数量。这真的有可能吗? 提前谢谢你。你知道吗


Tags: instance用户formreturnifmodelsrequestlink
2条回答

使用filtercount

# change request.user to user id or user instance you need
user_links_count = Link.objects.filter(user=request.user).count()

实现这一点有多种方法。你知道吗

  1. 使用查询并将其传递到模板中: ndpu已经指出: https://stackoverflow.com/a/22288960/659900
user_links_count = Link.objects.filter(user=request.user).count()
render(request, "addurl.html", {'form': form, linkscount: user_links_count})
  1. 使用模型属性,您可以使用该属性直接访问窗体上的模型,而无需在视图中接触渲染方法。 将以下方法添加到链接模型中:(警告:未测试!)你知道吗
@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的解决方案作为一次性解决方案。如果您更经常需要此功能,请考虑对模型进行增强

相关问题 更多 >