我的模型看起来像这样:
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])
但是,它不会在所有列中插入数据,而只是在第一列中插入列表。是否有可能实现我想做的事情?
答案 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)
相同(除了它没有创建副本,但在这种情况下它应该无关紧要。)