Я в новинку для веб-приложений и баз данных в целом, так что это может быть глупый вопрос. Я хочу сделать модель ("CategoryModel") с полем, которое указывает на основной идентификатор другого экземпляра модели (ее родитель).
class CategoryModel(models.Model):
parent = models.ForeignKey(CategoryModel)
Как мне это сделать? Спасибо!
python
django
django-orm
sfendell
источник
источник
parent
вместоparentId
, так какmy_category_model.parent
это будет экземплярCategoryModel
. Django автоматически создаст элемент,parent_id
который будет основным ключом связанной модели.Ответы:
Вы можете передать имя модели в виде строки в ForeignKey, и она будет работать правильно.
Так:
Или вы можете использовать строку "себя"
источник
Вы можете использовать строку «self» для указания собственной ссылки.
https://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey
источник
self
нет при определении свойства модели. Если бы свойство определялось как часть__init__()
или другого метода, оно было бы, какself
и всегда, первым позиционным аргументом для любого метода экземпляра класса Python.https://books.agiliq.com/projects/django-orm-cookbook/en/latest/self_fk.html
ИЛИ
https://stackabuse.com/recursive-model-relationships-in-django/
источник
Вы также должны установить NULL = True и пусто = True
null = True, чтобы разрешить в базе данных
пусто = True, чтобы разрешить в проверке формы
источник