clean()方法中的变量不会保存在Django中

时间:2018-06-04 19:53:10

标签: python django django-models

在models.py中,我有一个带有自定义clean()方法的模型。但是,我保存的任何变量都不会被存储。如果我尝试将变量保存在clean()方法之外,那么一切都运行良好。

class MenuItem(SortableMixin):
item_internal = models.ForeignKey(Page, on_delete=models.CASCADE, blank=True, null=True)
item_external = models.CharField(max_length=500000, blank=True, null=True)

def clean(self):
    if self.item_external is not None and self.item_internal is not None:
        raise ValidationError('Error')
    elif self.item_external is None and self.item_internal is None:
        raise ValidationError('Error')
    else:
        if self.item_external is not None:
            self.item_link = self.item_external
        elif self.item_internal is not None:
            self.item_link = '/' + self.item_internal.title_text.replace(' ', '%20')

item_link内的任何内容均未保存。为什么?如何解决?

1 个答案:

答案 0 :(得分:0)

我试图将内容保存到数据库中,而不为其创建数据库字段。解决方案很简单:

item_link = fields.CharField(max_length=50000)

我需要做的就是将该行添加到class。非常感谢Willem Van Onsem在评论中帮助我。谢谢!