【发布时间】:2020-05-13 14:55:20
【问题描述】:
我有一个 jsonField 类型的模型,如下所示
class Product(models.Model):
name=models.CharField(max_length=255,null=False,blank=False)
description=models.TextField(max_length=500,null=True,blank=True)
category=models.ForeignKey(Category,null=False,on_delete=models.CASCADE)
values = JSONField()
以及包含此json字段所需的JsonSchema的类别模型如下:
class Category(models.Model):
category_name=models.CharField(max_length=255,unique=True)
type = models.ForeignKey(Type, on_delete=models.CASCADE)
attributes_Schema_name = models.CharField(max_length=255)
def __str__(self):
return self.category_name
我制作了如下管理表单:
def Make_ProductJSONModelAdminForm(cat_id):
class ProductJSONModelAdminForm(forms.ModelForm):
class Meta:
model = Product
fields = "__all__"
DATA_SCHEMA_name=Category.objects.values_list('attributes_Schema_name',flat=True).get(id=int(cat_id))
with open("attSchemas/{0}".format(DATA_SCHEMA_name)) as jfile:
DATA_SCHEMA=json.load(jfile)
widgets = {
'values': JSONEditorWidget(DATA_SCHEMA, collapsed=False),
}
return ProductJSONModelAdminForm
@admin.register(Product)
class ProductModelAdmin(admin.ModelAdmin):
form = Make_ProductJSONModelAdminForm(cat_id=2)
inlines = [productUnitInline, productImageInline]
问题是:当在管理员中选择类别时,我需要动态传递 cat_id=2。实际上,我需要在管理员的类别选择中动态获取下面代码中的 cat_id。
form = Make_ProductJSONModelAdminForm(cat_id=2)
我想知道这可能吗?
【问题讨论】:
标签: django forms widget django-admin