仅供内部使用的模型的模型验证

Model Validation for internal only used model

我有一个仅供 python 在视图中内部使用的模型。不涉及表格。看起来像这样

class ShareLink(models.Model):

    from_share = models.ForeignKey(Share, on_delete=models.CASCADE, related_name='from_share')
    to_share = models.ForeignKey(Share, on_delete=models.CASCADE, related_name='to_share')

    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    creator = models.ForeignKey(settings.AUTH_USER_MODEL)
    active = models.BooleanField(default=True)

    mode = models.PositiveSmallIntegerField(choices=SHARE_LINK_MODE_CHOICES, default=1)

    class Meta:

        unique_together = ('from_share', 'to_share', 'mode', 'active')

    def clean(self):
        ret = super(ShareLink, self).clean()
        return ret

根据列模式,我有一些限制。例如,创建者必须是from_share 的创建者等等。所以基本上会在模型的 clean() 中完成什么。但这只有在涉及 ModelForm 时才会调用。但是我没有,因为这个模型只在内部使用。验证我的模型的最佳方法是什么?任何建议

在模型中实现 clean() 方法后,您可以在保存实例之前在视图中调用 full_clean() 方法以执行验证(参见 docs):

sharelink = ShareLink()
try:
    sharelink.full_clean()
except ValidationError as e:
    # Do something based on the errors contained in e.message_dict.
    # Display them to a user, or handle them programmatically.
    pass
sharelink.save()