ManyToManyField(to)有一个必填的参数,to表示要关联的表
models.py文件:将之前的article表的作者字段修改为可以填多个作者
class Article(models.Model):
'''文章'''
title = models.CharField(max_length=30,verbose_name='标题')
body = models.TextField(verbose_name='正文')
auth = models.ManyToManyField(Users,verbose_name='作者')
create_time = models.DateTimeField(auto_now_add=True,verbose_name='创建时间')
update_time = models.DateTimeField(auto_now=True,verbose_name='最后更新时间')
def __str__(self):
# return self.__doc__+":"+self.title
return "《" + self.title + "》"
class Meta:
verbose_name_plural='文章列表'
admin.py文件内容
list_display不能显示多对多,因此作者这里我们选择使用函数输出
class ControArticle(admin.ModelAdmin):
list_display = ('title', 'zuozhe', 'create_time','update_time')
ordering = ('id',)
search_fields = ("title","body")
list_per_page = 10
filter_horizontal = ('auth',) #只显示作者,不显示别的用户
# list_display_links = ('title','auth',)
# list_editable = ('body',)
# list_filter = ('auth',)
# date_hierarchy = 'create_time' #按创建时间过滤选择
def zuozhe(self,obj):
return [a.name for a in obj.auth.all() ]
admin.site.register(models.Article,ControArticle)