2012-02-07 193 views
0

及彼一對多對象是模型結構:客戶端是用戶,客戶端可以是法人或負責人:模型繼承在Django:從父類

class Client(User): 
    #fields 

class ClientCorporate(Client): 
    #fields 


class ClientPerson(Client): 
    #fields 

和客戶端可以發出命令:

class Order(models.Model): 
    client=models.ForeignKey(Client) 
    #fields 

我嘗試創建任何類型的客戶端的常見訂單列表,這裏是視圖:

def orders_list(request): 
    client=request.user.client 
    return list_detail.object_list(request, 
     queryset = client.order_set.all(), 
     #templates ... 
     ) 

而且它導致錯誤:

DatabaseError而渲染:沒有這樣的列:cabinets_order.client_id

我瀏覽數據庫,並發現所有用戶都有孩子的列「user_prt_id」。那麼,讓它在django中工作的最佳方式是什麼?創建自定義管理器,或以適當的方式更改模型? ...

回答

0

此錯誤僅表示您的cabinets_order表中沒有數據庫列client_id

確保你的python manage.py syncdb。如果在syncdb之後添加了外鍵,則必須重置該外鍵或手動添加外鍵。您可以通過運行python manage.py sqlall cabinets來生成所需的SQL,然後選擇ForeignKey生成位。

如果你能忍受失去你的當前數據(如果在開發中),只需要運行python manage.py reset cabinets

+0

是的,我執行syncdb後添加外鍵,復位幫助,謝謝! – 2012-02-08 06:24:51