首页 > 解决方案 > 有没有办法让 django 管理自定义模型模式

问题描述

我想知道是否可以自定义 django-admin 面板,以便管理员可以将属性添加到特定模型。更改属性的名称。通过管理面板修改架构。

标签: djangodjango-modelsdjango-rest-framework

解决方案


如果您想让用户自定义表单以便他们可以保存您最初没有想到的属性,那么您应该创建一个CustomField看起来像这样的通用模型:

class CustomField(models.Model):
    model_class = models.CharField(max_length=200)
    name = models.CharField(max_length=200)

然后,您将需要一种存储和检索值的方法,这可以使用像这样的其他模型来完成

class CustomFieldValue(models.Model):
    custom_field = models.ForeignKey(CustomField)
    object_id = models.IntegerField()
    field_value = models.CharField(max_length=200)

当然,检索额外的字段,以检索和保存数据的形式呈现它们将完全是您的工作。但是一旦你编写了必要的方法,你就可以从 django admin 中添加和配置新字段。

您可能会遇到性能问题和/或需要不同类型的字段(浮点数、日期等...)。在这种情况下,您将需要更复杂的方法。


推荐阅读