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

Django模型:使用生成器创建数据,django,django-models,generator,Django,Django Models,Generator,我有一个这样的模型: class ab(models.Model): a = models.CharField(max_length=8, primary_key=True) b = models.CharField(max_length=120) def createRecord(table, row): return table([x for x in row]) 而不是现在 ab(a = 'a', b = 'b').b 我能做到 ab('a', 'b').b 在

我有一个这样的模型:

class ab(models.Model):
   a = models.CharField(max_length=8, primary_key=True)
   b = models.CharField(max_length=120)
def createRecord(table, row):
    return table([x for x in row])
而不是现在

ab(a = 'a', b = 'b').b
我能做到

ab('a', 'b').b
在这两种情况下,它都会返回“b”。所以这给了我一些希望

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

class ab(models.Model):
   a = models.CharField(max_length=8, primary_key=True)
   b = models.CharField(max_length=120)
def createRecord(table, row):
    return table([x for x in row])
但是,它不会在所有列中插入数据,而只是在第一列中插入一个列表。是否有可能实现我想做的事情?

你试过这个吗

return table(*row)
我认为更好的做法是在创建模型对象时传递关键字args。如果列表中已有字段名
字段
,则可以执行以下操作:

return table(**dict(zip(fields, row)))
如果没有,您可以使用以下方法获取它:

fields = [ f.name for f in ab._meta.fields ]
(您可以选择过滤掉
id
字段)

顺便说一句,
表格([x代表行中的x])
表格(行)
相同(只是它没有创建副本,但在这种情况下,它应该无关紧要)。

您尝试过吗

return table(*row)
我认为更好的做法是在创建模型对象时传递关键字args。如果列表中已有字段名
字段
,则可以执行以下操作:

return table(**dict(zip(fields, row)))
如果没有,您可以使用以下方法获取它:

fields = [ f.name for f in ab._meta.fields ]
(您可以选择过滤掉
id
字段)


顺便说一句,
表([x代表行中的x])
表(行)
相同(只是它没有创建副本,但在本例中它应该无关紧要)。

请注意,这个问题与python生成器无关请注意,这个问题与python生成器无关