我知道如何设置默认值,但我不确定是否可以通过方法定义它。
@mrdurant:起初这是一个范围问题,我在调用函数之前有一个布尔字段,我把它放在函数之后但现在我得到以下错误:
“has_photo
只取1个参数(0给定)”
我尝试传递参数,但无法让它发挥作用。
注意:has_photo
函数会评估另一个类(HousingPhotos
)中的表是否保存了任何内容。
class Housing(models.Model):
h_type = models.CharField(max_length=16)
transaction = models.CharField(max_length=16)
pub_date = models.DateTimeField('publicado')
def has_photo(self):
test = Housing(self.pk)
if test.housingphotos_set.count() == 0:
return False
else:
return True
has_photo.boolean= True
show_photo = models.BooleanField(default=has_photo)
答案 0 :(得分:0)
您可以在默认值
中设置可调用对象def bar():
return boolean
your_boolean_field = models.BooleanField(default=bar)
或覆盖模型的保存方法。
def save(self, *args, **kwargs):
self.boolean_field = self.your_method()
super(ModelClass, self).save(*args, **kwargs)
def you_method(self)
return your_boolean #return true or false
答案 1 :(得分:0)
因为has_photo是一个方法,所以你需要能够将self作为第一个参数传递(django假设一个常规函数)。你可以把它从类中带出来作为常规函数,或构建一个函数来调用适当的参数:
default=lambda: self.has_photo()
将此表达为更详细的函数/方法调用
可能更好