Django模型:使用生成器来创建数据

时间:2013-05-25 20:56:48

标签: django django-models generator

我的模型看起来像这样:

class ab(models.Model):
   a = models.CharField(max_length=8, primary_key=True)
   b = models.CharField(max_length=120)

现在而不是

ab(a = 'a', b = 'b').b

我可以这样做

ab('a', 'b').b

在这两种情况下它都会让我'b'。所以这给了我一些希望。

我正在两个数据库之间写一张地图,我需要这样的东西:

def createRecord(table, row):
    return table([x for x in row])

但是,它不会在所有列中插入数据,而只是在第一列中插入列表。是否有可能实现我想做的事情?

1 个答案:

答案 0 :(得分:1)

你试过这个吗?

return table(*row)

我认为更好的做法是在创建Model对象时传递keyword-args。如果列表fields中已有字段名称,则可以执行以下操作:

return table(**dict(zip(fields, row)))

如果不这样做,您可以使用以下内容获取它:

fields = [ f.name for f in ab._meta.fields ]

(您可以选择过滤掉id字段。)

顺便说一下,table([x for x in row])table(row)相同(除了它没有创建副本,但在这种情况下它应该无关紧要。)