2017-01-20 5 views
0

Я работаю над проектом Django, и мне нужно, чтобы некоторые пользователи могли добавлять новую таблицу в существующую базу данных из панели администрирования приложения. Поскольку я не знаю специфики продуктов, которые пользователи хотели бы добавить в приложение с течением времени, мне нужен способ просто нажать «добавить новую категорию», которая станет именем новой таблицы в базе данных и внутри параметров категории добавления (столбец имена в базе данных), и после нажатия «сохранить» он добавит такую ​​таблицу в базу данных при запуске приложения, а другая категория пользователей сможет добавлять продукты в эту категорию, предоставляя данные для «параметров категории».Как добавить новую таблицу в базу данных в приложении Django

Поскольку я не знаю, как это сделать в джанго, я прошу вас о помощи.

+0

Обычно добавление новых таблиц - ужасная идея. Вы хотите, скорее всего, добавить строку в таблицу под названием category, а затем другую таблицу, содержащую параметры категории. –

+0

@Dave Plug, добавляющий новые таблицы, не всегда плохая идея, но в данном случае это неправильный выбор. –

ответ

1

Я не думаю, что вы хотите добавить новый стол для каждой категории. Вместо этого используйте Product модели с внешним ключом к Category модели:

class Category(models.Model): 
    name = models.CharField(max_length=100) 

class Product(models.Model): 
    name = models.CharField(max_length=100) 
    category = models.ForeignKey(Category, on_delete=models.PROTECT) 

Таким образом, добавление новый «стол» это просто вопрос ввода новой строки в таблице Category. Если вы хотите ограничить категорию пользователем, то вы можете добавить поле created_by на модели Category и основать на нем свою логику доступа.

Обратите внимание, что on_delete=models.PROTECT по внешнему ключу означает, что вы не можете удалить категорию, пока есть продукты, которые используют эту категорию.

+0

Большое спасибо, кажется, сегодня я плохо себя чувствую. Решение было очевидно, но мне нужен был кто-то другой, чтобы помочь. Еще раз благодарим вас и жаль беспокоить такой простой вопрос. – Uzzy

+0

@Uzzy не волнуйтесь, это случается со всеми :) –

Смежные вопросы