1

アクションを介して 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 admin ManyToManyField セレクターを持つテンプレートが必要なページにリダイレクトしたいと考えています。/add_authorsクエリセットコンテキストでリダイレクトするにはどうすればよいですか?

どうすればそれを機能させることができますか?

ありがとう。

4

1 に答える 1

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')

modeladminformfield_for_manytomanyで M2M フィールドを自動入力する方法をご覧ください。

ドキュメント: https://docs.djangoproject.com/en/1.8/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_for_manytomany

于 2015-10-10T01:06:00.613 に答える