10

我想从一些 3rd 方代码继承模型类。我不会使用某些字段,但希望我的客户能够在 Admin 中编辑模型。最好的办法是向管理员隐藏它们,还是我可以从一开始就阻止它们被创建?

此外 - 如果需要其中一个不需要的字段,我该怎么办?我的第一个想法是覆盖 save 方法并输入一个默认值。

4

4 回答 4

5

您可以控制在管理员中可编辑的字段。

来自 Django 文档:

如果您想要一个仅包含名称和标题字段的 Author 模型的表单,您可以像这样指定字段或排除:

class AuthorAdmin(admin.ModelAdmin):
    fields = ('name', 'title')

class AuthorAdmin(admin.ModelAdmin):
    exclude = ('birth_date',)

http://docs.djangoproject.com/en/dev/ref/contrib/admin/

于 2009-03-04T19:02:41.100 回答
4

如果您正在继承模型,那么尝试隐藏或禁用任何现有字段可能是不明智的。您可能做的最好的事情就是您所建议的:覆盖save()并处理您的逻辑。

于 2009-03-04T17:57:34.423 回答
4

与其继承,不如考虑使用自定义表单。

  1. 您可以从显示中删除仍在模型中的字段。

  2. clean()您可以在表单的方法中验证并提供默认值。

请参阅http://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin

于 2009-03-04T18:20:55.223 回答
0

只要您继承的第 3 方模型是一个抽象模型并且您确定不需要该字段,您就可以使用以下声明在模型级别将其删除:

class MyChild(ThirdPartyModel):
   unimportant_field = None

这样它甚至不会存在于数据库中,您当然不需要在 Admin 中进行任何进一步的修改。

于 2021-10-25T12:29:08.560 回答