如何声明指向相同类类型的previous或next属性?
我在官方文档中找不到答案
在下面的models.py中,我刚刚写了"scenes"之前的接下来和
from pickle import TRUE
from django.db import models
from django.contrib.auth.models import User
class scenes(models.Model):
name = models.CharField('Event name', max_length=120)
record_date = models.DateTimeField('Event date')
manager = models.ForeignKey(User, blank=True, null=True, on_delete=models.SET_NULL)
description = models.TextField(blank=True)
previous = models.ForeignKey(scenes, blank=True, null=True, on_delete=models.SET_NULL)
next = models.ForeignKey(scenes, blank=True, null=True, on_delete=models.SET_NULL)
def __str__(self):
return self.name
您可以使用'self'
来引用相同的模型。但是这里你可能可以使用OneToOneField
[Django-doc]用next
作为related_name=…
的值参数[Django-doc]用于previous
字段。这样,当您将B设置为A的next
时,A将自动成为B的previous
:
from pickle import TRUE
from django.db import models
from django.conf import settings
class scenes(models.Model):
name = models.CharField('Event name', max_length=120)
record_date = models.DateTimeField('Event date')
manager = models.ForeignKey(
settings.AUTH_USER_MODEL,
blank=True,
null=True,
on_delete=models.SET_NULL
)
description = models.TextField(blank=True)
previous = models.OneToOneField(
'self',
blank=True,
null=True,
related_name='next'
on_delete=models.SET_NULL
)
def __str__(self):
return self.name
注意:通常最好使用
settings.AUTH_USER_MODEL
[Django-doc]引用用户模型,而不是使用User
model[Django-doc]有关更多信息,您可以查看文档中引用User
模型部分的。