回答:
モデルの名前を文字列としてForeignKeyに渡すことができ、それは正しいことを行います。
そう:
parent = models.ForeignKey("CategoryModel")
または、文字列「self」を使用できます
parent = models.ForeignKey("self")
文字列 'self'を使用して、自己参照を示すことができます。
class CategoryModel(models.Model):
parent = models.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
class Employee(models.Model):
manager = models.ForeignKey('self', on_delete=models.CASCADE)
または
class Employee(models.Model):
manager = models.ForeignKey("app.Employee", on_delete=models.CASCADE)
https://stackabuse.com/recursive-model-relationships-in-django/
parentの代わりに、parentId以来、my_category_model.parentのインスタンスになりますCategoryModel。Djangoはparent_id、関連モデルの主キーとなるメンバーを自動的に作成します。