14

インラインの数が多いモデルがいくつかあります。すべてのオブジェクトにすべてが必要なわけではないので、インラインモデルを宣言して、インラインextra = 0に小さなものadd +が表示されるようにしました。

ただし、これはdjango1.5では機能しなくなったようです。が設定されている場合extra = 0、インラインは編集できなくなります。

1.4の動作を1.5にする方法はありますか?

サンプルコード:

class ModelInline(admin.StackedInline):
    model = MyModel
    extra = 0

class OtherModelAdmin(admin.ModelAdmin)
    inlines = [ModelInline]

admin.site.register(OtherModel, OtherModelAdmin)

編集(一部の画面):

Django 1.4: django 1.4 extra = 0

Django 1.5: ここに画像の説明を入力してください

(Hinzufügen==追加)

4

4 に答える 4

7

これは以前にすでに起こっています。

The new javascript made this impossible because the "Add Another" button 
was controlled by max_num, and ignored a value of 0.
The javascript ignored a value of 0 because max_num has a default value of 0, 
and all the code using it had taken to equating max_num = 0 with being "off". 
So you can't actually have a maximum of 0. It's not possible.

Gabrial Hurleyによって作成されたパッチがあり、他に何も壊さずに目的の動作を復元します。これは3年前のことで、Django1.5でまだ機能しているかどうかはわかりません。ちょうど試して :)

https://code.djangoproject.com/attachment/ticket/13023/13023_inlines_patch.diff

同じバグ(3年前)のチケットは次のとおりです。

https://code.djangoproject.com/ticket/13023

于 2013-03-16T13:55:13.343 に答える
2

djangoのインストールの外部にあるディレクトリに静的な管理コンテンツがあったため、同じ問題に遭遇しました。Django 1.5 静的コンテンツを django/contrib/admin/static/admin/js/ から STATIC_ROOT/admin/js にコピーすると、問題が修正されました。

于 2013-03-18T16:51:57.723 に答える
0

extraフィールドを追加するだけです。


例えば:

  1. models.py:

class Category(models.Model):
    name = models.CharField(max_length=50)
    def __str__(self):
        return self.name


class Product(models.Model):
    name = models.CharField(max_length=50)
    price = models.IntegerField()
    category = models.ForeignKey(Category, on_delete=models.CASCADE)

    def __str__(self):
        return '{}, {}'.format(self.name, self.company)

  1. admin.py:
    class InlinesProduct(admin.StackedInline):
        model = Product
        extra = 0     #<=== For remove empty fields from admin view

    @admin.register(Category)
    class CategoryAdmin(admin.ModelAdmin):
        inlines = [InlinesProduct]
于 2021-04-03T11:22:01.167 に答える