【问题标题】:Django Admin Interface ReadOnlyDjango 管理界面只读
【发布时间】:2016-05-08 07:56:46
【问题描述】:

在管理界面中 - 是否可以将字段设置为只读,但也可以设置值?例如,我正在构建一个 CRM,而一个组织将有一个程序。我希望创建程序的用户始终使用他们所属的组织。

示例:

程序 姓名 组织ID

用户 姓名 组织ID

我希望代码类似于

class Program(models.adminmodel):

readonly = ["organization"]

organization = user.organization

类组织(models.Model):

name = models.CharField(max_length=100)
street = models.CharField(max_length=100)
city = models.CharField(max_length=100)
state = models.ForeignKey(State)
phone = models.CharField(max_length=100)
zipcode = models.CharField(max_length=100)

def __str__(self):
    return self.name

类组织用户(models.Model):

organization = models.ForeignKey(Organization)
user = models.ForeignKey(User)

def __str__(self):
    return self.name

用户与 django 中的默认用户表相同

【问题讨论】:

    标签: django


    【解决方案1】:

    是的,您可以将管理字段设为只读

    https://docs.djangoproject.com/en/1.9/ref/contrib/admin/#django.contrib.admin.ModelAdmin.readonly_fields

     class MyAdmin(admin.ModelAdmin)
         fields = ("organization", "field2")
         readonly_fields = ("organization", )
    
         def save_model(self, request, obj, form, change):
             obj.organization = request.user.organization
             obj.save()
    

    【讨论】:

    • 嗨 Ramast - 谢谢,但这不是我要问的。我在问您是否可以将只读字段的值设置为用户组织
    • 更新了答案 ;)
    • 谢谢 - 你知道如何让这部分工作 Organization = OrganizationUser.objects.filter(user=request.user.id) 我只需要从 Organizationuser 获取 Organizationid
    • 假设您的用户模型有organization = models.ForiegnKey(Organziation),那么您可以通过访问user.organization_id获取组织ID
    • 我用了第三张表——User、Organizatoin、OrganizatoinUsers