Боюсь, это невозможно.
Я думаю, вы неправильно понимаете, как работают Модели. Посмотрите документы Django для моделей здесь .
По сути, Django сохраняет ваши модели через ORM ( Object-Relational-Mapping) .
Это означает, что написанная вами модель с полями, содержащимися в ней, преобразуется в запрос к базе данных, генерируя таблицу.
В документации для моделей вы можете увидеть этот фрагмент кода:
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
преобразуется в этот SQL запрос:
CREATE TABLE myapp_person (
"id" serial NOT NULL PRIMARY KEY,
"first_name" varchar(30) NOT NULL,
"last_name" varchar(30) NOT NULL
);
Это означает, что Django под капотом создает таблицы базы данных для каждой имеющейся у вас модели. ваше приложение.
Так как же работает в Django?
Хорошо, эти операторы SQL генерируются при запуске python manage.py makemigrations
. Фактические таблицы создаются при запуске python manage.py migrate
.
Это означает, что вы запускаете эти команды только один раз (для каждого изменения вашей модели), и для вашей модели будет создана только одна таблица.
Так почему я не могу добавить дополнительные TextFields к объекту?
Это потому, что для каждой модели в базе данных есть только одна таблица, и ваша модельбудет храниться так:
id | first_name | last_name
----------------------------------
1 | John | Doe
2 | Jane | Doe
... | ... | ...
Если бы вы добавили дополнительное поле (например, phone_number
) к Джону Доу, вам нужно было бы добавить это поле ко всей таблице.
Таким образом, в вашем случае вы выбираете между дополнительными полями тела и заголовка или дополнительными полями установленного количества для каждого объекта.
Хорошо, что теперь?
Ну, есть несколько способов сделать это. Лучше всего было бы создать отношение ManyToMany к модели, которая называется что-то вроде PostBody
, что позволило бы вам создать произвольное количество тел для заданного сообщения.
Вы можете изменить свой метод сохраненияPost
модель для автоматического создания установленного количества PostBody
объектов для этого объекта.
Подробнее о ManyToManyField можно прочитать здесь .