以下是模型结构:客户是用户,客户可以是公司或个人:
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 ...
)
这导致了一个错误:
呈现时数据库错误:没有这样的列:cabinets_order.client_id
我浏览数据库,发现所有User子级都有"User_prt_id"列。那么,让它在django工作的最佳方式是什么?创建自定义管理器,或以适当的方式更改模型。。。
这个错误只是意味着cabinets_order
表中没有数据库列client_id
。
确保python manage.py syncdb
。如果您在syncdb
ing之后添加了一次外键,则必须重置它,或者手动添加外键。您可以通过运行python manage.py sqlall cabinets
,然后选择ForeignKey生成位来生成所需的SQL。
如果您可以忍受丢失当前数据(如果正在开发中),只需运行python manage.py reset cabinets