我有一些带有大量内联的模型。由于并非每个对象都需要所有对象,因此我使用extra = 0
声明了内联模型,因此内联中出现了一个小的add +
。
但是,这似乎不再适用于django 1.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.5:
(Hinzufügen== add)
答案 0 :(得分: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年前,我不知道它是否仍然适用于Django 1.5。试试:))
https://code.djangoproject.com/attachment/ticket/13023/13023_inlines_patch.diff
这是同一个错误(3年前)的票证:
答案 1 :(得分:2)
我遇到了同样的问题,因为我在django安装之外的目录中有静态管理员内容。将Django 1.5静态内容从django / contrib / admin / static / admin / js /复制到STATIC_ROOT / admin / js修复了该问题。
答案 2 :(得分:0)
更好的解决方案是覆盖内联本身的get_extra方法。这适用于Django 1.9,但我不能说早期版本
答案 3 :(得分:0)
您所要做的就是添加 extra
字段。
例如:
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)
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]