django中的模型继承:从父类获取OneToMany对象

时间:2012-02-07 17:42:39

标签: django inheritance django-models

这是模型结构:客户是用户,客户可以是公司或个人:

class Client(User):
    #fields

class ClientCorporate(Client):
    #fields


class ClientPerson(Client):
    #fields

客户可以下订单:

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

我尝试为任何类型的客户创建通用订单列表,这里是view:

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中工作的最佳方法是什么?创建自定义管理器,或以适当的方式更改模型? ...

1 个答案:

答案 0 :(得分:0)

此错误仅表示您的client_id表中没有数据库列cabinets_order

确保python manage.py syncdb。如果在syncdb之后添加了一次外键,则必须重置它,或手动添加外键。您可以通过运行python manage.py sqlall cabinets生成所需的SQL,然后选择ForeignKey生成位。

如果您可以失去当前数据(如果正在开发中),请运行python manage.py reset cabinets