Вопрос дизайна модели: настраиваемые поля во время выполнения? - PullRequest
0 голосов
/ 13 июля 2010

У меня есть несколько новых вопросов о Джанго.

Я хочу написать общую систему управления билетами, в которой администратор сайта должен иметь возможность добавлять настраиваемые поля в заявку.Кажется, что таблицы базы данных генерируются при инициализации, поэтому мне не ясно, как добавить настраиваемые поля во время выполнения.Один из способов - получить длинный список полей разных типов, все они могут быть обнуляемыми, и позволить администратору переименовать / выбрать нужные ей поля.Есть ли лучший дизайн?

Спасибо!

Ответы [ 2 ]

1 голос
/ 13 июля 2010

В настоящее время я отвечаю за поддержание аналогичного сайта, где указано лечение для медицинского состояния, и может быть произвольное количество «случаев», которые являются пользовательскими событиями для этого комбинированного лечения / состояния.

Метод, который использовала моя компания, заключался в том, чтобы получить объект Entry, аналогичный описанному вами настраиваемому полю, который имеет внешний ключ, ссылающийся на обработку / состояние, к которому он относится.

Затем, когда мы хотим получить все записи для определенной комбинации лечения / состояния, мы просто делаем

Entry.objects.filter(condition=ID)

Итак, в вашем случае я бы предложил иметь модель Ticket и модель стиля "Entry", которая содержит ссылку на внешний ключ для Ticket, к которому он принадлежит.

0 голосов
/ 22 марта 2011

Я бы сделал что-то вроде кода ниже. Сохраните дополнительные атрибуты в модели атрибутов. Сохраните значения в AttributeValue.

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


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


class AttributeValues(models.Model):
    attribute = models.ForeignKey(Attribute)
    ticket = models.ForeignKey(Ticket)
    value = models.CharField(max_length=200)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...