3

如果有这样的模型:

class Person(models.Model):
    id = models.IntegerField()
    first_name = models.CharField(max_length=50)
    last_name = models.IntegerField()
    birthday = models.DateField()
    address = models.CharField(max_length=250)     
    phone = models.TimeField()

要创建 Person 类对象,我从存储过程中获取数据,例如:

cursor = connection.cursor()
cursor.callproc('sp_get_person_by_id', {id:1234})
results = cursor.fetchall()

[Person(*row) for row in results]

但是“sp_get_person_by_id”返回的字段比 Person 类属性多。因此“狗屎发生”,错误发生是因为有些字段没有要映射的属性。

可以仅映射此属性吗?我怎样才能做到这一点?

提前谢谢。

干杯。

4

1 回答 1

2

如果您知道从存储过程中返回的属性的顺序,您可以像这样将它们传递给模型:

cursor = connection.cursor()
cursor.callproc('sp_get_person_by_id', {id:1234})
results = cursor.fetchall()
result_list = []   

from row in results:
    p = self.model(id=row[0], fist_name=row[1], last_name=row[2], birthday=row[3])
    result_list.append(p)
return result_list
于 2014-03-18T20:15:50.823 回答