class LineItemInline(admin.TabularInline):
model = LineItem
extra = 10
class InvoiceAdmin(admin.ModelAdmin):
model = Invoice
inlines = (LineItemInline,)
和
class LineItem(models.Model):
invoice = models.ForeignKey(Invoice)
item_product_code = models.CharField(max_length=32)
item_description = models.CharField(max_length=64)
item_commodity_code = models.ForeignKey(CommodityCode)
item_unit_cost = models.IntegerField()
item_unit_of_measure = models.ForeignKey(UnitOfMeasure, default=0)
item_quantity = models.IntegerField()
item_total_cost = models.IntegerField()
item_vat_amount = models.IntegerField(default=0)
item_vat_rate = models.IntegerField(default=0)
当我这样设置时,管理界面要求我将数据添加到所有十个LineItems。 LineItems有必填字段,但如果没有输入数据,我预计它不需要整行项目。
答案 0 :(得分:1)
这很奇怪,它应该不会这样做 - 如果你没有输入任何东西,它不应该连续需要任何数据。
我想知道default
选项是否会导致它混淆。同样,Django应该应对这一点,但尝试删除它们,看看会发生什么。
另请注意:
item_unit_of_measure = models.ForeignKey(UnitOfMeasure, default=0)
无效,因为0不能是UnitOfMeasure对象的ID。如果您不需要FK,请在字段声明中使用null=True, blank=True
。
答案 1 :(得分:0)
原来问题是默认值。上面提到的关于UnitOfMeasure的那个不是实际问题,但是任何具有默认值=的字段都会导致它要求其余的数据存在。这对我来说似乎是一个错误,因为在确定记录中是否有任何需要保存的内容时,应该减去默认值,但是当我删除所有默认值时,它会起作用。
在此代码中, item_unit_of_measure = models.ForeignKey(UnitOfMeasure,默认= 0) 这是让数据库中的第0个条目成为默认值的偷偷摸摸的方式。然而,正如他所指出的那样,这并不成功。