0

我有一个看起来像这样的模型:

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])

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

4

1 回答 1

1

你试过这个吗?

return table(*row)

我认为更好的做法是在创建模型对象时传递关键字参数。如果您已经在 list 中有字段名称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)(除了它没有创建副本,但在这种情况下它应该无关紧要)。

于 2013-05-25T21:03:58.630 回答