django - Django admin内联“添加更多项目”按钮不起作用
问题描述
尝试在 Django 中学习堆叠内联。有一个非常基本的设置
对于 admin.py
from django.contrib import admin
from .models import Picture, Review
class ReviewInline(admin.StackedInline):
model = Review
save_on_top = True
fields = ["reviewer"]
#@admin.register(Picture)
class PictureAdmin(admin.ModelAdmin):
save_on_top = True
fields = ["painter"]
inlines = [ReviewInline,]
admin.site.register(Review)
admin.site.register(Picture, PictureAdmin)
对于模型.py
from django.db import models
class Picture(models.Model):
painter = models.CharField(("painter"), max_length=255)
def __str__(self):
return self.painter
class Review(models.Model):
picture = models.ForeignKey(Picture, on_delete=models.CASCADE)
reviewer = models.CharField( max_length=255)
extra = 0
def __str__(self):
return self.reviewer
可以看出没有“添加更多项目”按钮。我认为这可能是 JS 问题,但不确定(我确实在浏览器中启用了 JS)
有人有什么想法吗?
解决方案
我相信你extra=0
在错误的类中,它应该在Inline
不是Model
......
extra=0
从模型中移除
class Review(models.Model):
picture = models.ForeignKey(Picture, on_delete=models.CASCADE)
reviewer = models.CharField( max_length=255)
# extra = 0 <---- remove this
def __str__(self):
return self.reviewer
将其添加到内联:
class ReviewInline(admin.StackedInline):
model = Review
save_on_top = True
extra = 0
fields = ["reviewer"]
理由来自这个例子的这个片段:
@admin.register(Painter)
class PainterAdmin(admin.ModelAdmin):
save_on_top = True
fields = ["name"]
inlines = [PictureInline]
class ReviewInline(admin.StackedInline):
model = Review
extra = 0
fields = ["reviewer", "comment"]
编辑:第二个想法你可能也想摆脱save_on_top
内联?
推荐阅读
- python - 从使用 Tensorflow 数据集 API 训练的模型推断新输入
- kotlin - 变量 INT,吸气剂 DOUBLE
- java - 带有守护线程的 ExecutorService - 显式关闭
- vue.js - Vue.js 转换的意外行为
- mongodb - 如何在猫鼬中合并两个对象
- c# - 在 ServiceStack JsonServiceClient 上设置 Accept 标头
- java - 为什么我们使用数据库而不将信息存储在变量中(服务器)
- android - 构建具有重复 ID 的 APK
- assembly - 我们可以添加和使用返回地址堆栈寄存器来防止堆栈溢出攻击吗?
- node.js - Passport.JS:错误:无法将用户反序列化出会话