如何在Django模型中声明一个类的属性指向同一个类?



如何声明指向相同类类型的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设置为Anext时,A将自动成为Bprevious:

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]引用用户模型,而不是使用Usermodel[Django-doc]有关更多信息,您可以查看文档中引用User模型部分的

最新更新