【问题标题】:Django, let user build his own table and data structureDjango,让用户建立自己的表和数据结构
【发布时间】:2020-05-27 16:42:14
【问题描述】:

也许有一个难题,在谷歌上显然找不到任何东西,仍在寻找它。 无论如何,我正在尝试建立一个包含大约 40 个字段的表单。 - 其中 20 个字段是简单的 CharText 字段 - 其中 10 个字段是简单的 DateTime 字段 - 剩下的 10 个字段是我的两难选择。 对于最后 10 个字段 id,希望让正在编译表单的用户可以: - 决定表的结构(如:3列。'col1''col2''col3' 或 5 列,如果他需要); - 在添加了他需要的列之后,他还可以在之前的表格中添加新的条目。

我将发布模型基础结构。 ('='后面的空行表示我不知道如何填写) 我需要让用户建立自己的结构。 我可以自己构建柱子,但最好让他通过选择自己的结构来创建它们。

class Incarico(models.Model):
    #id = models.AutoField(primary_key=True)
    nr_sinistro = models.CharField(max_length=50, default=None)
    nr_polizza = models.CharField(max_length=50, default=None)
    appuntamento_danno = models.CharField(max_length=50, default=None)
    note_pubbliche = models.CharField(max_length=50, default=None)
    note_private = models.CharField(max_length=50, default=None)
    sinistro = models.DateField(default=None)
    incarico = models.DateField(default=None)
    perizia = models.CharField(max_length=50, default=None)
    pl = models.CharField(max_length=50, default=None)
    codifiche = models.CharField(max_length=50, default=None)
    studio = models.CharField(max_length=50, default=None)
    impiegata = 
    perito = models.CharField(max_length=50, default=None)
    perito_date = models.DateField(default=None)
    accertatore = 
    revisore = 
    contatto = models.CharField(max_length=50, default=None)
    contatto_date = models.DateField(default=None)
    sopralluogo = models.CharField(max_length=50, default=None)
    sopralluogo_date = models.DateField(default=None)
    interloc = models.CharField(max_length=50, default=None)
    interloc_date = models.DateField(default=None)
    evasione = models.CharField(max_length=50, default=None)
    evasione_date = models.DateField(default=None)
    mandante = 
    agenzia = 
    ispettorato = 
    ramo = 
    liquidatore = 
    assicurato = 
    amministratore = 
    broker = 
    danneggiati = 
    tipologia_sinistro =
    data_incarico = models.DateField(default=None)
    note = models.CharField(max_length=500, default=None)

提前致谢!

【问题讨论】:

    标签: python django database django-models


    【解决方案1】:

    恕我直言,如果您使用 Postgresql,您可以创建像 Charfield 或 JSONField 这样的通用字段。然后使用这个通用字段在模型构建之前和之后创建一个验证器。

    例如,您可以创建一个 JSONField 并保存如下内容:

    {
       "field": "CharField",
       "value": "This is a example text",
    }
    

    {
        "field" "DateField",
        "value": "MM/DD/YYYY"
    }
    

    这样你就可以在运行时使用field的名字来创建字段的实例。

    如果您允许用户创建他们自己的自定义表,那么您最终会得到许多具有不同架构的表。也许不是一个好主意。

    【讨论】:

    • 我使用默认的sqlite3,但我打算把它改成mysql
    • 好的,我想我会创建表格列,我会让用户把数据放进去,谢谢!!!
    猜你喜欢
    • 2011-12-14
    • 1970-01-01
    • 2018-11-20
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多