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生成器无关