我问自己这个问题,models.py和views.py中方法的区别和性能是什么?
示例1:
models.py:
class Counter(models.Model):
number = models.PositiveSmallIntegerField(default=0)
def add_one(self):
self.number += 1
self.save()
views.py
from *xxx* import Counter
def count(request):
c = Counter()
c.add_one()
c.save()
return render(request, *xxx*)
示例2:
models.py:
class Counter(models.Model):
number = models.PositiveSmallIntegerField(default=0)
views.py
from *xxx* import Counter
def add_one(nb):
nb += 1
return nb
def count(request):
c = Counter()
c.number = add_one(c.number)
return render(request, *xxx*)
我的例子有点简单,但是现实生活与大方法和许多变量的区别是什么?
它对服务器的性能有影响吗?他是否有传统或偏好选择单向?
答案 0 :(得分:4)
正确的方法是
Counter.objects.filter(pk=some_id).update(number=F('number')+1)
请注意,需要采用此方法来避免竞争条件。您当前的方法需要事务才能使其正常工作。像上面这样的代码通常会进入视图。