Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回2个值django模型方法_Django_Django Admin - Fatal编程技术网

返回2个值django模型方法

返回2个值django模型方法,django,django-admin,Django,Django Admin,这是一个简单的例子来说明我的观点 class A(models.Model): boolean_field=models.BooleanField(default=False) name = models.CharField(max_length=50, blank=True) some_other_field = models.CharField(max_length=10) def true_value(self): if self.boolean_field:

这是一个简单的例子来说明我的观点

class A(models.Model):
  boolean_field=models.BooleanField(default=False)
  name = models.CharField(max_length=50, blank=True)
  some_other_field = models.CharField(max_length=10)

  def true_value(self):
    if self.boolean_field:
      return self.name
    else:
      return ''

  def false_value(self):
    if not self.boolean_field:
      return self.name
    else:
      return ''
admin.py中

class Aadmin(admin.ModelAdmin):
  list_display = ('true_value', 'some_other_field', 'false_value')
在上面的例子中,我认为数据库被击中了两次。是否有任何方法可以一次性获取值并在列表显示中使用它。有没有办法优化这一要求


谢谢

我在评论中提出的观点值得进一步解释,因为很明显你对Django的模型层的工作方式有很大的误解

Django从数据库中获取对象后,对该对象中不同属性的后续调用不会触发对db的额外调用。除非您特别要求,否则将同时获取模型的所有属性并将其存储在模型实例中。(发生额外调用的唯一情况是属性是外键,但即使在这种情况下,您也可以使用
select\u related
避免这种情况)


事实上,甚至每个对象都不会有一个调用,因为Django只需一个调用就可以获取页面上的所有行。

过早优化是万恶之源。别猜了,profile.为什么你认为db会被击中两次?“那不是真的。@丹尼尔如果是真的,那么实现就没有问题了。但我认为它会击中两次,因为有两个单独的方法调用数据库。@catherine是的,可能需要它,例如在会计中,一个是借方金额,一个是贷方金额,取决于布尔字段。我同意,我不精通django的细微差别,但这并不意味着误解。感谢您消除了对优化的顾虑。