2013-04-25 139 views
1

如果有一個模型,如:存儲過程結果的Django模型

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類屬性。因此,「狗屎發生」,錯誤發生,因爲有沒有屬性映射的字段。

可以只映射這些屬性嗎?我怎樣才能做到這一點?

Thx提前。

乾杯。

回答

1

如果你知道你會得到從存儲過程後面的屬性的順序,你可以將它們傳遞到這樣的模式:

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