仅供内部使用的模型的模型验证
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()
我有一个仅供 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()