考虑这些伪模型:
class Category(models.Model):
name = models.CharField()
class Product(models.Model):
name = models.CharField()
code = models.CharField()
category = models.ForeignKey(Category)
price = models.DecimalField()
stock = models.IntegerField()
class AlternativeProduct(Product):
original_product = models.ForeignKey(Product, related_name="alternative", editable=False)
我想使用内联线,以便能够快速添加一个产品及其替代选项,而不必键入重复的数据(只有代码,股票和价格)。你知道吗
管理员.py
class AlternativeProductInline(admin.TabularInline):
model = AlternativeProduct
formset = AlternativeProductInlineFormset
fk_name = "original_product"
fields = ["code", "price", "in_stock"]
max_num = 1
extra = 0
class ProductAdmin(admin.ModelAdmin):
form = ProductAdminForm
inlines = [AlternativeProductInline]
当然,这会引起ValidationError
,因为AlternativeProduct
缺少一个category
。你知道吗
现在我可以设置一个默认值来修复:
class Product(models.Model):
name = models.CharField()
code = models.CharField()
category = models.ForeignKey(Category, default=1)
price = models.DecimalField()
stock = models.IntegerField()
但是除了这个id可能不存在之外,它仍然需要被更正。是否有其他方法(除了Javascript)将正版产品的类别值复制到替代内联产品“引擎盖下”
我尝试过改变admin\ u视图,但它有点不成熟,也许自定义视图是一个很好的解决方案,尽管javascript是一种耗时较少的方法。你知道吗
Javascript似乎是实现这一点的简单方法。你知道吗
相关问题 更多 >
编程相关推荐