django - Django Admin:将初始数据提供给表单字段
问题描述
我需要通过管理面板手动向数据库添加一个条目,但管理员应该无法设置所有值:
#models.py
class Product(models.Model):
price = models.DecimalField("price")
status = models.PositiveIntegerField("status")
name = models.CharField("name", max_length=31, unique=True)
## tried:
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.initial['status'] = 2
#admin.py
class ProductForm(forms.ModelForm):
class Meta:
model = Product
fields = ["price", "name",]
@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
form = ProductForm
## tried:
def get_changeform_initial_data(self, request):
return {'status': 99}
管理员应该能够创建 aProduct
并给它一个name
and price
,但status
值应该设置为0
. 我已经尝试过这种方法和this,但没有成功。
我试过了:
- 使用
__init__
方法添加初始值 get_changeform_initial_data()
添加状态的方法。
我总是以sqlite3.IntegrityError: NOT NULL constraint failed: _TEST_Product.status
.
编辑:我知道这可以通过在模型中设置默认值来完成,但这不是我想要的 - 我想在管理员中设置它。
解决方案
编辑
由于您不想使用该default
字段,因此您应该从这个答案中尝试这种方法。
class ProductAdmin(admin.ModelAdmin):
form = ProductForm
def save_model(self, request, obj, form, change):
obj.status = 0
super().save_model(request, obj, form, change)
为什么不直接使用该default
字段?
status = models.PositiveIntegerField("status", default=0)
推荐阅读
- java - docker build with maven - 如何防止重新下载依赖项
- mongodb - 使用 pymongo 提取文档数组中的子对象
- javascript - 在 Typescript 中解构赋值和“选择”时,类型上不存在属性
- android - 如何从片段中的属性引用中检索可绘制对象
- asp.net-core - 使用 Microsoft.AspNetCore.Rewrite 扩展在 ASP.NET Core 3 中重写静态文件的 URL
- java - 如何使用 Selenium Java 获取新打开的 IE 窗口的浏览器句柄
- angular - 已解决 - 当一个接一个地运行 2 个 observable 时 - 根据第一个得到结果
- flutter -
- javascript - TypeError:“设置getter-only属性vuejs axios
- sql - 在插入期间计算连续天数