2012-01-11 68 views
1

有点背景...为Django模型定制sql

我想创建一个自定义auth后端并扩展用户模型。我使用下面的蓝图:

blog post by Scott Barnham

无论出于何种原因,ORM是产生无效的SQL。它似乎想要做一个内部连接回自己,它失败了,因为它找不到连接的名为user_ptr_id的字段。

如果您为此搜索,似乎我可能不是唯一的搜索。实际上,在上述博客文章的评论中提到了这一点。但是,我似乎无法解决它。

看来我应该能够重写正在生成的SQL。那是对的吗?从我所知道的看来,我可能会用自定义对象管理器来做到这一点。正确?

但是,我似乎无法找到我想要做的一个很好的例子。我看到的每件事都想要继承并链接它们。这不是我想要做的。我有点只是想说这样的:

嘿Django!在select上,使用这个SQL语句。 etc

这可能吗?也许我的“googlin”今天关闭了,但我似乎无法找到它。这导致我相信我在使用错误的术语或其他内容。

请注意:我使用Django 1.3.1使用Python 2.6.5和PostgreSQL 9.1

+1

获得帮助的最佳方法是显示您正在使用的代码(模型,产生错误的代码以及逐字错误消息) – sgallen 2012-01-12 00:50:23

回答

0

大卫,

是的,你可以通过执行一个压倒一切的管理覆盖模型的行为目的。我找到Greg Allard在A Django Model Manager for Soft Deleting Records上的一个很棒的博客,它通过软删除运行,将字段deleted设置为True/False,并且只显示未删除的对象或全部删除的对象。我认为你可以重写你的对象的all()或filter()方法来获得你想要的东西。顺便说一句,每次我使用了一个指针,“ptr”在字段的名称中都是明显的,这是因为类继承。例如,class Animal():...,class Man(Animal): Man延伸或是Animal的一个子类。在数据库中,Man表中将有一个animal_ptr_id,它用动态表的元组作为具有ANIMAL字段和MAN字段JOINed的Man来“扩展”动物表的元组。

+0

感谢您的回复! – 2012-01-12 15:59:26