计数每个用户上传和批准的文件 [英] Count files each user has uploaded and approved
问题描述
我正在构建一个用于上传文件的Django应用程序。我想能够统计用户拥有的文件数量以及哪些文件被批准。我有一个具有布尔已批准字段的模型。此模型位于admin.py中。
在admin.py
$来自django.contrib的从.models导入FileModel
.forms import FileForm
class FileModelAdmin( admin.ModelAdmin):
form = FileForm
fields =('title','description','categories','pub_date','submitted_date','author','user' ,'upload','vote')
#pass
list_display = ['title','approved','author','user','categories','description','pub_date' 'submitted_date','upload','vote']
admin.site.register(FileModel,FileModelAdmin)
我会的像在另一个应用程序中的另一个模型new_user_model中的整数,当在管理站点中批准文件时,将整数字段'文件'增加1。这样我可以跟踪每个用户已经批准了多少个文件。
class NewUserModel(models.Model):
user = models.OneToOneField(User,on_delete = models.CASCADE)
#user = models.ForeignKey(User)
files = models.IntegerField(default = 0)
文件模型
class FileModel(models.Model):
title = models.CharField(max_length = 100)
description = models.CharField(max_length = 255)
pub_date = models.DateTimeField日期发布')
submitted_date = models.DateTimeField('date submitted')
author = models.CharField(max_length = 255)
user = models.ForeignKey(User,default = 6)
approved = models.BooleanField(default = False)
upload = models.FileField().....................
。 ......... .........................................
所以我希望在new_user_model中的文件字段在文件被批准时增加1,并在管理站点中点击保存按钮。另外,如果已批准被取消选中,我需要将文件字段减少一个。
如何才能完成?
更新:
最终我希望能够显示用户在该网站上的文件数。
谢谢,
我终于有机会完成这个从django.contrib导入admin
$ d
$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $模型从.forms导入User
从crudapp.models导入的FileForm
导入NewUserModel
#from django.db导入模型
from django.core.exceptions import PermissionDenied $来自django.contrib的b $ b从django.contrib.admin.actions导入admin
import delete_selected为delete_selected_
#请参阅https://gist.github.com/rudyryk/4190318
#覆盖并重新创建delete_selected
def delete_selected(modeladmin,request,queryset):
如果不是modeladmin.has_delete_permission(请求):
raise PermissionDenied
如果request.POST.get ('post'):
在查询中的obj
obj.delete()
else:
返回delete_selected_(modeladmin,请求,查询)
delete_selected.short_description =删除所选对象
class FileModelAdmin(admin.ModelAdmi n):
form = FileForm
fields =('title','description','categories','pub_date','submitted_date','author','user','approved'上传','投票')
#pass
list_display = ['title','approved','author','user','categories','description','pub_date' ','upload','vote']
actions = ['approve_files','delete_selected']
def approve_files(self,request,obj):
for qs in obj:
printrun number ...
author = qs.author
adminApproved = qs.approved#在管理站点上批准状态
userInstance = User.objects.get( username = author)
id = qs.id
item = FileModel.objects.get(pk = id)
approved = item.approved#FileModel中的#批准状态
id = userInstance .id
item = NewUserModel.object
打印存在主义
打印已批准:%s%(已批准)
打印adminApproved:%s%(adminApproved)
if(approved == False):
item.files + = 1
item.save()
obj.update(approved = True)
#NewUserModel.save()
#obj.save()
def save_model(self,request,obj,form,change):
id = obj.id
item = FileModel.objects。 get(pk = id)
#测试如果文件已批准在管理站点上已更改
if(item.approved!= obj.approved):
author = obj.author
userInstance = User.objects.get(username = author)
id = userInstance.id
item = NewUserModel.objects.get(user_id = id)
if(obj.approved ==真的):
item.files + = 1
item.save()
else:
item.f iles - = 1
item.save()
obj.save()
def delete_model(self,request,queryset):
print我们在里面delete_model ()
author = queryset.author
userInstance = User.objects.get(username = author)
id = queryset.id
item = FileModel.objects.get(pk = id)
approved = item.approved#FileModel中的已批准状态
#filename = obj.profile_name +。xml
#os.remove(os.path.join(obj.type,文件名))
id = userInstance.id
item = NewUserModel.objects.get(user_id = id)
#-1在filemodel中的文件只有批准
(如果已批准) True:
item.files - = 1
item.save()
打印delete_model()的内部部分
queryset.delete()
#'删除所选'动作
def delete_selected(self,request,queryset):
print我们在里面e_selected()
在查询中的obj:
author = obj.author
adminApproved = obj.approved#在管理站点上批准状态
userInstance = User.objects.get(username = author)
id = obj.id
item = FileModel.objects.get(pk = id)
approved = item.approved#在FileModel中批准状态
id = userInstance。 id
item = NewUserModel.objects.get(user_id = id)
#对于文件被删除但是被批准的情况
如果被批准== True:
项目。文件 - = 1
打印delete_selected()的内部部分
item.save()
打印为每个obj迭代运行
queryset.delete()
admin.site.register(FileModel,FileModelAdmin)
I am building a Django app for uploading files. I would like to be able to count the number of files a users has and which are approved. I have a model with a Boolean 'approved' field. This model is in admin.py.
In admin.py
from django.contrib import admin
from .models import FileModel
from .forms import FileForm
class FileModelAdmin(admin.ModelAdmin):
form = FileForm
fields = ('title', 'description', 'categories', 'pub_date', 'submitted_date', 'author', 'user', 'approved', 'upload', 'vote')
# pass
list_display = ['title', 'approved', 'author', 'user', 'categories', 'description', 'pub_date', 'submitted_date', 'upload', 'vote']
admin.site.register(FileModel, FileModelAdmin)
I would like an integer in another model 'new_user_model', which is in another app, to increase an integer field 'files' by one when a file is approved in the admin site. This way I could keep track of how many files have been approved for each user.
class NewUserModel(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
# user = models.ForeignKey(User)
files = models.IntegerField(default=0)
The model for the files,
class FileModel(models.Model):
title = models.CharField(max_length=100)
description = models.CharField(max_length=255)
pub_date = models.DateTimeField('date published')
submitted_date = models.DateTimeField('date submitted')
author = models.CharField(max_length=255)
user = models.ForeignKey(User, default=6)
approved = models.BooleanField(default=False)
upload = models.FileField().....................
...................................................
So I want the files field in new_user_model to increase by one when a file is 'approved' and the save button hit in the admin site. Also if the 'approved' is unchecked I would need the 'files' field to reduce by one.
How could this be done?
Updated:
Ultimately I would like to be able to display the number of files a user has on the site.
Thanks,
I finally got a chance to complete this?
from django.contrib import admin
from .models import FileModel
from django.contrib.auth.models import User
from .forms import FileForm
from crudapp.models import NewUserModel
#from django.db import models
from django.core.exceptions import PermissionDenied
from django.contrib import admin
from django.contrib.admin.actions import delete_selected as delete_selected_
# see https://gist.github.com/rudyryk/4190318
# overrides and recreates delete_selected
def delete_selected(modeladmin, request, queryset):
if not modeladmin.has_delete_permission(request):
raise PermissionDenied
if request.POST.get('post'):
for obj in queryset:
obj.delete()
else:
return delete_selected_(modeladmin, request, queryset)
delete_selected.short_description = "Delete selected objects"
class FileModelAdmin(admin.ModelAdmin):
form = FileForm
fields = ('title', 'description', 'categories', 'pub_date', 'submitted_date', 'author', 'user', 'approved', 'upload', 'vote')
# pass
list_display = ['title', 'approved', 'author', 'user', 'categories', 'description', 'pub_date', 'submitted_date', 'upload', 'vote']
actions = ['approve_files', 'delete_selected']
def approve_files(self, request, obj):
for qs in obj:
print "run number..."
author = qs.author
adminApproved = qs.approved # approved status on admin site
userInstance = User.objects.get(username=author)
id = qs.id
item = FileModel.objects.get(pk=id)
approved = item.approved # approved status in FileModel
id = userInstance.id
item = NewUserModel.objects.get(user_id=id)
print "existentialism"
print "approved: %s" %(approved)
print "adminApproved: %s" %(adminApproved)
if(approved == False):
item.files += 1
item.save()
obj.update(approved = True)
#NewUserModel.save()
#obj.save()
def save_model(self, request, obj, form, change):
id = obj.id
item = FileModel.objects.get(pk=id)
# Test if file 'approved' has been changed on admin site
if(item.approved != obj.approved):
author = obj.author
userInstance = User.objects.get(username=author)
id = userInstance.id
item = NewUserModel.objects.get(user_id=id)
if(obj.approved == True):
item.files += 1
item.save()
else:
item.files -= 1
item.save()
obj.save()
def delete_model(self, request, queryset):
print "we are inside delete_model()"
author = queryset.author
userInstance = User.objects.get(username=author)
id = queryset.id
item = FileModel.objects.get(pk=id)
approved = item.approved # approved status in FileModel
#filename=obj.profile_name+".xml"
#os.remove(os.path.join(obj.type,filename))
id = userInstance.id
item = NewUserModel.objects.get(user_id=id)
# -1 for file in filemodel only if approved
if approved == True:
item.files -= 1
item.save()
print "inner part of delete_model()"
queryset.delete()
# The 'Delete selected' action
def delete_selected(self, request, queryset):
print "we are inside delete_selected()"
for obj in queryset:
author = obj.author
adminApproved = obj.approved # approved status on admin site
userInstance = User.objects.get(username=author)
id = obj.id
item = FileModel.objects.get(pk=id)
approved = item.approved # approved status in FileModel
id = userInstance.id
item = NewUserModel.objects.get(user_id=id)
# For the case where a file is deleted but was approved yet
if approved == True:
item.files -= 1
print "inner part of delete_selected()"
item.save()
print "running for each iteration of obj"
queryset.delete()
admin.site.register(FileModel, FileModelAdmin)
这篇关于计数每个用户上传和批准的文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!