(使用Django 1.11.5)Django的 - 自定義保存方法模型
傳統,我總是創造像這樣的模型:
class Animal(models.Model):
is_hungry = models.BooleanField(default=True)
然後進行修改,如下所示:
animal = Animal()
animal.save()
animal.is_hungry = True
animal.save()
最近,我看到一個朋友定義模型與自定義的保存方法:
class Animal(models.Model):
is_hungry = models.BooleanField(default=True)
def feed_animal(self):
self.is_hungry = False
self.save()
並調用這個方法似乎按預期方式工作:
>>> from testapp.models import Animal
>>> a = Animal()
>>> a.save()
>>> a.is_hungry
True
>>>
>>> a.feed_animal()
>>> a.is_hungry
False
有沒有在模型定義定義這種自定義的保存方法什麼好處/缺點?有沒有理由直接在對象上調用.save()
?
沒有缺點,但將模型的方法隱藏起來可能不是最佳做法。定義只修改模型對象狀態並保存到view.py代碼的feed_animal方法會更清晰。 –
@ Jarek.D - 所以你仍然會推薦保留'feed_animal()'方法,只需刪除'self.save()'? –
是的,但如果feed_animal()只會真正改變屬性的狀態,它不是很pythonic - 只是做a.is_hungry = False –