我正在尝试通过操作向Django上的ManyToManyField添加多个项目。 模特:
class Publisher(models.Model):
name = models.CharField(max_length=30)
address = models.CharField(max_length=50)
website = models.URLField()
class Author(models.Model):
name = models.CharField(max_length=30)
twitter = models.CharField(max_length=20)
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
管理员面板
def add_authors(modeladmin, request, queryset):
return HttpResponseRedirect('/add_authors')
@admin.register(Book)
class BookRegister(admin.ModelAdmin):
actions = [add_authors]
我想将所选项目重定向到/add_authors
页面,我想要一个具有Djagno管理员ManyToManyField选择器的模板。如何使用queryset上下文重定向到/add_authors
?
我怎样才能让它发挥作用?
感谢。
答案 0 :(得分:1)
这样的内容会让您pk
所有选定的Books
import urllib
def add_authors(modeladmin, request, queryset):
params = {
'books': queryset.values_list('id', flat=True)
}
redirect_url = '/add_authors/?%s' % urllib.urlencode(params, doseq=True)
return HttpResponseRedirect(redirect_url)
您可以在pk
视图中检索图书add_authors
列表:
# http://.../?books=1&books=2&...
books = request.GET.getlist('books')
查看formfield_for_manytomany
如何在modeladmin中自动填充M2M字段: