在模型的描述中,其中一个字段表示ForeignKey - 对另一个对象的引用。value替换中的字段参数on_delete = models.SET(value)可以是值或对函数的引用。
在这种情况下,需要在该函数中设置一个参数self来计算绑定对象的数量。
数据模型是具有各种类型内容的网页。页面上的内容对象有一些顺序,通过单向绑定到前一个对象来实现。如果在编辑页面期间删除了任何对象,则其后面的对象必须附加到相对于被删除对象的前一个对象,即 基于单链表。
模型.py
class Page(models.Model):
""" Страница с контентом. """
title = models.CharField('Заголовок', max_length=256)
content = models.ManyToManyField('Content')
# ...
class Content(models.Model):
""" Модель контента страницы Page. """
# корневой объект контента на странице
is_root = models.BooleanField('Начальный?', default=False)
# ссылка на предыдущий контент страницы
previous = models.ForeignKey(
'self'
, null=True
, default=None
, related_name='next'
, on_delete=models.SET(get_previous(self))
)
# ...
这里的字段previous是对它自己的对象的引用——之前的内容。如果删除链接对象,则需要重新绑定。
我正在尝试使用get_previous( self)函数实现重新绑定,以便通过对象识别页面self并重新绑定其中的内容对象。
def get_previous(self):
""" Возвращает ссылку на другой предыдущий контент после удаления связанного. """
# ...
return pk
问题。
Django 无法识别self上下文中的参数- 。on_delete = get_previous(self)Unresolved reference 'self'
有什么方法可以绕过这个错误?
self 无法识别,因为您没有将它传递到任何地方。尝试在一个类方法中实现你的功能,其中 self. 例如: