web-dev-qa-db-ja.com

Django自己参照外部キー

私は一般的にwebappsやデータベース関連のものに慣れていないので、これは愚かな質問かもしれません。モデルの別のインスタンス(その親)のプライマリIDを指すフィールドを持つモデル( "CategoryModel")を作成します。

class CategoryModel(models.Model):
    parentId = models.ForeignKey(CategoryModel)

どうすればいいですか?ありがとう!

136
sfendell

ForeignKeyに文字列としてモデルの名前を渡すことができ、それは正しいことをします。

そう:

parentId = models.ForeignKey("CategoryModel")

または、文字列「self」を使用できます

parentId = models.ForeignKey("self")
219
Jared Forsyth

文字列「self」を使用して、自己参照を示すことができます。

class CategoryModel(models.Model):
    parentId = models.ForeignKey('self')

https://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey

49
Brandon

https://books.agiliq.com/projects/Django-orm-cookbook/en/latest/self_fk.html

class Employee(models.Model):
    manager = models.ForeignKey('self', on_delete=models.CASCADE)

OR

class Employee(models.Model):
    manager = models.ForeignKey("app.Employee", on_delete=models.CASCADE)

https://stackabuse.com/recursive-model-relationships-in-Django/

1
Hailee