我想从一些 3rd 方代码继承模型类。我不会使用某些字段,但希望我的客户能够在 Admin 中编辑模型。最好的办法是向管理员隐藏它们,还是我可以从一开始就阻止它们被创建?
此外 - 如果需要其中一个不需要的字段,我该怎么办?我的第一个想法是覆盖 save 方法并输入一个默认值。
我想从一些 3rd 方代码继承模型类。我不会使用某些字段,但希望我的客户能够在 Admin 中编辑模型。最好的办法是向管理员隐藏它们,还是我可以从一开始就阻止它们被创建?
此外 - 如果需要其中一个不需要的字段,我该怎么办?我的第一个想法是覆盖 save 方法并输入一个默认值。
您可以控制在管理员中可编辑的字段。
来自 Django 文档:
如果您想要一个仅包含名称和标题字段的 Author 模型的表单,您可以像这样指定字段或排除:
class AuthorAdmin(admin.ModelAdmin): fields = ('name', 'title') class AuthorAdmin(admin.ModelAdmin): exclude = ('birth_date',)
如果您正在继承模型,那么尝试隐藏或禁用任何现有字段可能是不明智的。您可能做的最好的事情就是您所建议的:覆盖save()
并处理您的逻辑。
与其继承,不如考虑使用自定义表单。
您可以从显示中删除仍在模型中的字段。
clean()
您可以在表单的方法中验证并提供默认值。
请参阅http://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin
只要您继承的第 3 方模型是一个抽象模型并且您确定不需要该字段,您就可以使用以下声明在模型级别将其删除:
class MyChild(ThirdPartyModel):
unimportant_field = None
这样它甚至不会存在于数据库中,您当然不需要在 Admin 中进行任何进一步的修改。