Django 实现Admin自动填充当前用户的示例代码
model.py
importdatetime
fromdjango.contrib.auth.modelsimportUser
fromdjango.dbimportmodels
classEntry(models.Model):
title=models.CharField(max_length=250)
slug=models.SlugField()
pub_date=models.DateTimeField(default=datetime.datetime.now)
author=models.ForeignKey(User,related_name='entries')
summary=models.TextField(blank=True)
body=models.TextField()
classMeta:
get_latest_by='pub_date'
ordering=('-pub_date',)
verbose_name_plural='entries'
def__unicode__(self):
returnself.title
defget_absolute_url(self):
return"/weblog/%s/%s/"%(self.pub_date.strftime("%Y/%b/%d"),
self.slug)
admin.py
fromdjango.contribimportadmin
fromblog.modelsimportEntry
classEntryAdmin(admin.ModelAdmin):
exclude=('author',)
list_display=('title','pub_date','author')
prepopulated_fields={'slug':['title']}
defhas_change_permission(self,request,obj=None):
has_class_permission=super(EntryAdmin,self).has_change_permission(request,obj)
ifnothas_class_permission:
returnFalse
ifobjisnotNoneandnotrequest.user.is_superuserandrequest.user.id!=obj.author.id:
returnFalse
returnTrue
defqueryset(self,request):
ifrequest.user.is_superuser:
returnEntry.objects.all()
returnEntry.objects.filter(author=request.user)
defsave_model(self,request,obj,form,change):
ifnotchange:
obj.author=request.user
obj.save()
admin.site.register(Entry,EntryAdmin)
参考链接:https://www.b-list.org/weblog/2008/dec/24/admin/
以上这篇Django实现Admin自动填充当前用户的示例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。