Динамическое изменение типа данных значения поля в моделях Django - PullRequest
0 голосов
/ 30 октября 2018

В моем приложении есть следующий пример использования: есть поле формы, которое динамически добавляется из бэкэнда. каждая переменная может быть: целое число, число с плавающей запятой, текст и т. д. Мой вопрос заключается в том, каков наилучший способ реализовать эту концепцию с использованием моделей django или базы данных в целом. вот мой текущий подход:

class FieldValue(models.Model):
text_value = models.CharField(max_length=255, null=True)
long_text_value = models.TextField(null=True)
date_value = models.DateField(null=True)
datetime_value = models.DateField(null=True)
number_int_value = models.IntegerField(null=True)
number_float_value = models.FloatField(null=True)
image_value = models.ImageField(null=True)
boolean_value = models.BooleanField(default=False)

class FormField(models.Model):
name = models.CharField(max_length=50)
type = models.CharField(max_length=30, choices=FIELD_TYPE_OPTIONS)
api = models.CharField(max_length=255, null=True)
value = models.ForeignKey(FieldValue)

Я использовал поля формы и значения полей, однако проблема здесь в том, что для любого объекта поля формы я храню много переменных, хотя я просто использую только одну из них (максимум). Другим подходом может быть сохранение их всех в виде строк, а затем выполнение правил проверки и проверки типов на прикладном уровне, но я не думаю, что это будет эффективно. Какие-нибудь мысли?

...