假装我有这些课程:
# For storing arbitrary blobs
class GenericAttachment(models.Model):
# Some fields...
type = models.PositiveSmallIntegerField("Type", choices=('Generic', 'Report', 'Image', 'Budget'))
# Some methods...
class ReportAttachment(GenericAttachment):
# Report specific fields
pass
class BudgetAttachment(GenericAttachment):
# Budget-specific fields
pass
class Record(models.Model):
attachments = models.ManyToManyField(GenericAttachment, blank=True, null=True)
class DataEntry(models.Model):
attachments = models.ManyToManyField(GenericAttachment, blank=True, null=True)
真实的稍微复杂一些,但并不多。
当A的类型为“报告”时,我想将“报告”类用于额外字段,而使用“预算”则相同。但是,其他类型都没有自己的唯一字段,因此不需要自己的子类。我还想避免每个Record / DataEntry有3个ManyToMany字段...所有附件的列表更可取,但它应该根据实际类型打开正确的创建/编辑表单。
理想情况下,我想要一个界面,在用户更改类型时添加和删除特定于报表和预算的字段,并保存为正确的类型。我可以编写自己的视图来完成它,但是小应用程序的其余部分都是通过管理界面完成的,我希望能保持这一切。那么......有人能想到在管理界面中获得这种行为的好方法吗?