多态Django Admin,具有非抽象继承

时间:2013-06-20 21:15:29

标签: django django-models django-admin

假装我有这些课程:

# 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字段...所有附件的列表更可取,但它应该根据实际类型打开正确的创建/编辑表单。

理想情况下,我想要一个界面,在用户更改类型时添加和删除特定于报表和预算的字段,并保存为正确的类型。我可以编写自己的视图来完成它,但是小应用程序的其余部分都是通过管理界面完成的,我希望能保持这一切。那么......有人能想到在管理界面中获得这种行为的好方法吗?

0 个答案:

没有答案