1

django admin で一度に複数のレコードを追加できるようにしたいと思います。

models.py

class Photo(models.Model):
    pub_date = models.DateTimeField('date published')
    sort = models.IntegerField()
    photo_category = models.ForeignKey(Photocategory)
    title = models.CharField(max_length=200)
    title_url = models.SlugField(max_length=200)
    main_image = models.ImageField(blank=True, null=True, upload_to='images/photo/')
    # size is "width x height"
    cropping = ImageRatioField('main_image', '350x350')

    def image_thumbnail(self):
       return '<a href="/media/%s" target="_blank"><img width="160px" src="/media/%s"/></a>' % (self.main_image, self.main_image)

    image_thumbnail.allow_tags = True
    image_thumbnail.short_description = 'main_image'

    def __unicode__(self):
        return self.title

admin.py

class PhotoAdmin(ImageCroppingMixin, admin.ModelAdmin):

    prepopulated_fields = {'title_url': ('title',)}
    list_display = ('title', 'photo_category', 'image_thumbnail', 'sort')
    list_filter = ['photo_category']
    admin.site.register(Photo, PhotoAdmin)

スクリーンショット: ジャンゴ管理パネル

1つの画面で一度に5つ言うことができる方法はありますか.1つずつ入力するのは非常に遅いです.SQLクエリを使用してmysqlで実行できますが、ここでこれを達成したいと思います.

ありがとう

4

1 に答える 1

0

ねえ、これは可能ですが、箱から出して、、

あなたがしなければならないことは次のとおりです。

  1. PhotoAdminの属性にFormset (複数の写真フォームを作成するため) を定義します。form

  2. 写真の追加管理ページにフォームセットが表示され、正しく機能するはずです。そうでない場合は、Admin で属性を指定しadd_form_templateてテンプレートを上書きし、そのフォーム セット テンプレートを表示できます。change_form_template

  3. Formset内の複数のオブジェクトの保存を処理する

例えば:

# admin.py

@admin.register(Photo)
class PhotoAdmin(ImageCroppingMixin, admin.ModelAdmin):
    prepopulated_fields = {'title_url': ('title',)}
    list_display = ('title', 'photo_category', 'image_thumbnail', 'sort')
    list_filter = ['photo_category']
        
    form = MyFormset
    add_form_template = "photo/admin/my_add_form.html"
    change_form_template = "photo/admin/my_change_form.html"

これは大まかなワークフローです。これを試して、必要に応じて変更を加える必要があります。このドキュメントを参照できます: https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#modeladmin-options

于 2014-05-01T06:10:38.493 に答える