模型.py檔案
#create class roles, id, portal_name, role_name
class Roles(models.Model):
portal_name = models.CharField(_('Portal name'), max_length=100)
role_name = models.CharField(_('Role_name'), max_length=50)
#create permission for roles
class RolePermission(models.Model):
module_name = models.CharField(_('Module name'), max_length=100)
module_delete = models.BooleanField(default=False, help_text="Delete module. Default false, can't delete")
module_edit = models.BooleanField(default=False, help_text="Edit module. Default false, can't edit")
module_create = models.BooleanField(default=False, help_text="Create module. Default false, can't create")
module_submit = models.BooleanField(default=False, help_text="Submit module, Default false.")
module_role_id = models.ForeignKey('Roles', on_delete=models.CASCADE)


我的 admin.py 檔案
@admin.register(RolePermission)
class RolePermissionAdmin(admin.ModelAdmin):
list_display = ('module_name', 'module_role_id_id', 'module_delete', 'module_edit', 'module_create', 'module_submit')
如在列中顯示來自表角色的 role_name 的資訊,使用外鍵
uj5u.com熱心網友回復:
您可以定義一個方法,并在list_display. 對于這個特定的情況,我們因此role_name而相關的.module_role_id:
@admin.register(RolePermission)
class RolePermissionAdmin(admin.ModelAdmin):
list_display = ('module_name', 'role_name', 'module_delete', 'module_edit', 'module_create', 'module_submit')
@admin.display(description='role name')
def role_name(self, obj):
return obj.module_role_id.role_name
注意:通常不會
_id為ForeignKey欄位添加后綴,因為 Django 會自動添加帶有_id后綴的“孿生”欄位。因此應該是module_role,而不是。module_role_id
uj5u.com熱心網友回復:
您可以創建新屬性并在 list_display 中使用它,它應該是這樣的:
class RolePermission(models.Model):
module_name = models.CharField(_('Module name'), max_length=100)
module_delete = models.BooleanField(default=False, help_text="Delete module. Default false, can't delete")
module_edit = models.BooleanField(default=False, help_text="Edit module. Default false, can't edit")
module_create = models.BooleanField(default=False, help_text="Create module. Default false, can't create")
module_submit = models.BooleanField(default=False, help_text="Submit module, Default false.")
module_role_id = models.ForeignKey('Roles', on_delete=models.CASCADE)
def module_role(self):
return self.module_role_id.role_name
你的 list_display 應該是這樣的:
list_display = ('module_name', 'module_role', 'module_delete', 'module_edit', 'module_create', 'module_submit')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/360202.html
上一篇:在同一視圖中創建兩個實體時,DjangoOneToOne欄位發生沖突
下一篇:即使我使用了ScrapyItem.objects.all(),我在djangorest框架的APIView中的post方法中也只得到一個物件。任何人都知道為什么
