我有这样的模型:
class MyModel(models.Model):
var1 = models.CharField(max_length=10)
var2 = models.CharField(max_length=10)
var3 = models.CharField(max_length=10)
var4 = models.CharField(max_length=10)
...
var100 = models.CharField(max_length=10)
我必须以类似的方式处理所有这些,例如:
string = var1 if var1 else ''
string += var2 if var2 else ''
string += var3 if var3 else ''
string += var4 if var4 else ''
...
string += var100 if var100 else ''
这样我会写出100行代码......
但也许有一些方法可以在for语句中处理所有这些,例如:
string = ''
for i in range(1,101):
string += var%s % i if var%s % i else '': #I know this is not right, but idea is understood
所以我只会编写3行代码。
Django可以吗?
谢谢!
答案 0 :(得分:2)
你可以试试这个:
#assuming this is on the Model
def get_values(self):
ret = []
for i in range(1, 101):
field_name = "var%d" % i
value = self._meta.get_field(field_name).value_from_object(self)
if value:
ret.append(value)
return ''.join(ret)
答案 1 :(得分:0)
使用getattr
访问代码中的属性
>>> class MyModel():
... var1 = 'hello'
... var2 = 'there'
... var3 = 'simple'
... var4 = 'example'
...
>>> foo = MyModel()
>>> getattr(foo,'var1')
'hello'
>>> number = 3
>>> getattr(foo,'var%s'%number)
'simple'
>>> for x in range(1,5):
... print getattr(foo,'var%s' % x)
...
hello
there
simple
example