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)
本文介绍了在Django中如何处理一对多和多对多关系,特别是针对多对多关系,通过修改models.py文件将article表的作者字段设置为可输入多个作者,并在admin.py文件中调整显示方式,因list_display无法直接展示多对多字段,故采用函数输出的方式来呈现多对多关系的作者信息。
919

被折叠的 条评论
为什么被折叠?



