74

私がこのモデルを持っていると仮定します:

class Task(models.Model):
    title = models.CharField()

ここで、あるタスクが別のタスクに関連している可能性があることを望みます。だから私はこれをやりたかった:

class Task(models.Model):
    title = models.CharField()
    relates_to = ForeignKey(Task)

ただし、タスクがメモで定義されていることを示すエラーがあります。これは「合法」ですか、そうでない場合は、それに似たようなことをどのように行う必要がありますか?

4

2 に答える 2

150
class Task(models.Model):
    title = models.CharField()
    relates_to = models.ForeignKey('self')

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

于 2012-06-26T18:59:55.213 に答える
21

そうできます。ForeignKey属性を文字列にします。

class Task(models.Model):
    title = models.CharField()
    relates_to = ForeignKey(to='Task')

詳細には、ドット表記を使用してアプリのモデルを相互参照することもできます。

class Task(models.Model):
    title = models.CharField()
    relates_to = ForeignKey(to='<app_name>.Task')  # e.g. 'auth.User'
于 2012-06-26T19:00:18.630 に答える