198

私はウェブアプリやデータベース全般に不慣れなので、これはばかげた質問かもしれません。モデルの別のインスタンス (その親) のプライマリ ID を指すフィールドを持つモデル ("CategoryModel") を作成したいと考えています。

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

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

4

4 に答える 4

324

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

そう:

parent = models.ForeignKey("CategoryModel")

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

parent = models.ForeignKey("self")
于 2013-03-08T02:25:18.277 に答える
68

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

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

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

于 2013-03-08T02:25:34.903 に答える
12

あなたも設定null=Trueしてblank=True

class CategoryModel(models.Model):
    parent = models.ForeignKey("self", on_delete=models.CASCADE, null=True, blank=True)

null=True、データベース
blank=Trueで許可する 、フォーム検証で許可する

于 2019-12-17T14:09:34.923 に答える
8

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/

于 2019-06-19T18:34:09.950 に答える