Django, позволить пользователю построить свою собственную таблицу и структуру данных - PullRequest
0 голосов
/ 27 мая 2020

получил сложный вопрос, по-видимому, ничего не могу найти в Google, все еще ищу. В любом случае я пытаюсь создать форму примерно из 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)

Заранее спасибо!

1 Ответ

0 голосов
/ 27 мая 2020

IMHO, вы можете создавать общие c поля, такие как Charfield или JSONField, если вы используете Postgresql. Затем с помощью этих общих c полей создайте валидатор до и после построения модели.

Например, вы можете создать JSONField и сохранить что-то вроде этого:

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

или

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

Таким образом вы можете создать экземпляр поля, используя имя field во время выполнения.

Если вы дадите возможность пользователям создавать свои собственные пользовательские таблицы, вы закончите с множеством таблиц с разными схемами. Возможно, это не лучшая идея.

...