使用assign_perm django守护者完整性错误

时间:2015-02-25 15:54:53

标签: django django-guardian

我试图用自己的用户模型使用监护人。是的,我知道,没有保证监护人会与另一个用户模型一起工作:-)。但我会感谢任何帮助,试图理解这一点,看看我是否能够实现这一目标。

我的用户模型定义为:

class Member(AbstractBaseUser, PermissionsMixin):
    ...

调用assign_perm('tab.view_tab',mem,ttt)时出错。

IntegrityError: insert or update on table "guardian_userobjectpermission" violates foreign key constraint "guardian_userobjectpermission_user_id_fkey"
DETAIL:  Key (user_id)=(67) is not present in table "member_member".

“mem”成员(即用户)的id为67,所以这是正确的。 member_member似乎是正确的。

回溯的顶部是:

   In [14]: assign_perm('tab.view_tab', mem, ttt)                                                                                                                             
    ---------------------------------------------------------------------------
    IntegrityError                            Traceback (most recent call last) 
    <ipython-input-14-fbd245913aef> in <module>()
    ----> 1 assign_perm('tab.view_tab', mem, ttt)

<dir>/env/local/lib/python2.7/site-packages/guardian/shortcuts.pyc in assign_perm(perm, user_or_group, obj)
     89     if user:
     90         model = get_user_obj_perms_model(obj)    
---> 91         return model.objects.assign_perm(perm, user, obj)
     92     if group:
     93         model = get_group_obj_perms_model(obj)

  <dir>/env/local/lib/python2.7/site-packages/guardian/managers.pyc in assign_perm(self, perm, user, obj)
      39         else:
      40             kwargs['content_object'] = obj
  ---> 41         obj_perm, created = self.get_or_create(**kwargs)
     42         return obj_perm
     43

<dir>/env/local/lib/python2.7/site-packages/django/db/models/manager.pyc in manager_method(self, *args, **kwargs)
     90         def create_method(name, method):
     91             def manager_method(self, *args, **kwargs):
---> 92                 return getattr(self.get_queryset(), name)(*args, **kwargs)
     93             manager_method.__name__ = method.__name__
     94             manager_method.__doc__ = method.__doc__
....

当我mem = Member.objects.get(pk=2)然后assign_perm('tab.view_tab', mem, ttt)时,它工作正常,没有错误。当我执行mem = Member.objects.get(pk=3)然后assign_perm('tab.view_tab', mem, ttt)时,它会失败,如上所述。所以我似乎有一些希望。

我假设有些人让django-guardian与其他用户模型一起工作,所以我想看看我能改变什么才能使其工作。但是,诚然,我被困住了。 谢谢!

0 个答案:

没有答案