允许最终用户在 Django

问题描述

请考虑这种情况: 我的网站上有几个客户,每个客户都可以从他的仪表板创建员工。但是他们每个人可能都希望在表单或用户模型中使用不同的字段。

示例: Client_1 需要姓名、电子邮件、电话等形式 Client_2 需要姓名、电话、地址和生日

所以从认的表单/模型客户端应该能够删除不需要的字段并创建他的必填字段。

我希望这可以使用 Django 或 ContentTypes 来完成

请知道的人提供详细的答案。这将非常有帮助。

解决方法

这实际上取决于您的情况。最大的问题是输入类型。很难将 BooleanFieldCharFieldIntegerFieldTextField 概括为某个模型的一个字段。但我会开始尝试将所有内容保存到 CharFields,然后将它们转换为表单中的正确输入。 模型看起来像这样:

class CustomField(models.Model)
    label = models.CharField('label',max_length=100)
    input_type = models.ChoiceField('label',choices=(('text','text'),('integer','integer')) max_length=100)
    value = models.CharField('value',max_length=100)


class Contact(models.Model):
    custom_fields = models.ManyToManyField(CustomField)

变体 2 根据您的示例,您也可以尝试覆盖所有字段,然后进行可见性设置。因此,用户可以看到他们可以选择的所有字段,并根据需要进行更改。

像这样:

class Contact(models.Model):
    name = models.CharField('name',max_length=100)
    email = models.CharField('email',max_length=100)
    phone = models.CharField('phone',max_length=100)
    address = models.CharField('address',max_length=100)
    birth_date = models.DateField('birth_date',max_length=100)

class VisibilitySettings(models.Model):
    name = models.BooleanField(default=True)
    email = models.BooleanField(default=True)
    phone = models.BooleanField(default=True)
    address = models.BooleanField(default=True)
    birth_date = models.BooleanField(default=True)