Задать вопрос
@leo9797

Как автоматически создать модель в Django?

К примеру у меня есть две модели
#Room apps
class Room(models.Model):
    name_room = models.CharField(max_length=20)

    def __str__(self):
        return self.name_room

#Furniture apps

class Furniture(models.Model):
    name_furniture  = models.CharField(max_length=20)
    about_furniture = models.TextField(max_length=156)
    image_furniture = models.ImageField(upload_to='room_media')

    def __str__(self):
        return self.name_furniture

Как можно при создании полей в модели Room, автоматически создавать модель названия name_room в приложении Furniture в котором могу добавлять поля по модели Furniture?
  • Вопрос задан
  • 608 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 2
Astrohas
@Astrohas
Python/Django Developer
room = models.ForeignKey(Room, on_delete=models.CASCADE)

если одна фурнитура может быть в одной комнате то так.

А если вы об админке, то используйте https://docs.djangoproject.com/en/2.2/ref/contrib/...

Если же вы имели ввиду автоматическое создание фурнитур после создания комнаты, то переопределяйте save модели либо используйте сигналы
Ответ написан
Guest007
@Guest007
Django, Python, Linux и всё такое...
Хм. Есть подозрение, что ты таки путаешь понятие Модель (описание структуры таблицы в БД в терминах Объектности) и Запись в БД

Если у тебя для одной Room может быть несколько Furniture, то совет уважаемого Astrohas вполне к месту. Если же кроме этого и одна и та же фурнитура может быть в разных комнатах, то тут подойдёт ManyToManyField

Создаём запись о комнате с именем "РУМ1"
Создаём запись о комнате с именем "РУМ2"
Создаём запись о фурнитуре с именем "ФУР1"
Создаём запись о фурнитуре с именем "ФУР2"
Создаём запись о фурнитуре с именем "ФУР3"

Указываем, что в "РУМ1" есть "ФУР1" и "ФУР3"
Указываем, что в "РУМ2" есть "ФУР1" и "ФУР2"

Для связей Многое-ко-Многим создаётся промежуточная таблица. Если надо иметь контроль над этой связью (связи могут иметь дополнительные поля), то надо у поля ManyToManyField указать параметр though.

Как-то так.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы