python 使django模型字段变为只读

gmol1639  于 2023-02-07  发布在  Python
关注(0)|答案(1)|浏览(109)

我正在创建一个django DB模型,我希望其中一个字段是只读的。当创建一个新对象时,我想设置它,但后来如果有人试图更新该对象,它会引发一个错误。我该如何实现呢?
我尝试了以下方法,但仍然能够更新对象。

from django.db import models as django_db_models

class BalanceHoldAmounts(django_db_models.Model):
    read_only_field = django_db_models.DecimalField(editable=False)

谢谢

r3i60tvu

r3i60tvu1#

您可以在模型的“保存”方法中覆盖它,并在有人试图更新该字段时引发ValidationError。

def save(self, *args, **kwargs):
    if self.pk:
        previous_value = BalanceHoldAmounts.objects.get(pk=self.pk)
        if previous_value.read_only_field != self.read_only_field:
            raise ValidationError("The read_only_field can not be changed")    
    super().save(*args, **kwargs)

相关问题