问题描述
我正在使用 auth_permission 模型并在此模型中添加额外的字段。
class Permission(models.Model):
name = models.CharField(_('name'),max_length=255)
content_type = models.ForeignKey(
ContentType,models.CASCADE,verbose_name=_('content type'),)
codename = models.CharField(_('codename'),max_length=100)
我想添加的额外字段是
application_id = models.ForeignKey(ApplicationTbl,db_column='application_id',on_delete=models.CASCADE,blank=True,null=False)
有人可以告诉解决方法将其添加到auth_permission 模型。
解决方法
在您的 models.py
中输入:
from django.contrib.auth.models import Permission
# inject application_id atribute to the Django Permission model
if not hasattr(Permission,'application_id'):
application_id = models.ForeignKey(ApplicationTbl,db_column='application_id',on_delete=models.CASCADE,blank=True,null=False)
application_id.contribute_to_class(Permission,'application_id')
在那之后,运行迁移,你应该准备好了。
,执行此操作的 official standard way in Django docs 是在模型内的 Meta 类中定义它;如果它是您的用户模型,您也可以考虑使用 PermissionsMixin; 对其进行自定义; 如果您将所有内容都放在正确的位置,我相信这也适用于您的情况。 您没有提供有关您的系统以及您要执行的操作的太多详细信息,但我猜您是在尝试弄清楚用户在哪个应用程序上下文中执行其活动。在这种情况下,如果您的系统规模相当大,您还可以尝试将用户身份验证后端视为 Django 项目中的单独应用程序文件夹。希望我能帮上忙。