Sou um pouco novo nos aplicativos da web e no banco de dados em geral, então essa pode ser uma pergunta idiota. Eu quero criar um modelo ("CategoryModel") com um campo que aponte para o ID primário de outra instância do modelo (seu pai).
class CategoryModel(models.Model):
parent = models.ForeignKey(CategoryModel)
Como eu faço isso? Obrigado!
python
django
django-orm
sfendell
fonte
fonte
parent
vez deparentId
, jámy_category_model.parent
que será uma instância deCategoryModel
. O Django criará automaticamente um membroparent_id
que será a chave primária do modelo relacionado.Respostas:
Você pode passar o nome de um modelo como uma sequência para ForeignKey e ele fará a coisa certa.
Assim:
Ou você pode usar a string "self"
fonte
Você pode usar a string 'self' para indicar uma referência própria.
https://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey
fonte
self
não está presente ao definir a propriedade do modelo. Se a propriedade estivesse sendo definida como parte de um__init__()
ou outro método, seria, comoself
sempre, o primeiro argumento posicional para qualquer método de instância de uma classe Python.https://books.agiliq.com/projects/django-orm-cookbook/en/latest/self_fk.html
OU
https://stackabuse.com/recursive-model-relationships-in-django/
fonte
Você também deve definir null = True e em branco = True
null = True, para permitir no banco de dados em
branco = True, para permitir a validação do formulário
fonte