Necesito crear un modelo de Django que el administrador no pudo, pero debería estar disponible para verlo. Su contenido será ingresado desde el sitio. ¿Cómo puedo hacerlo?

0
Andrey Orel 3 oct. 2019 a las 17:01

3 respuestas

La mejor respuesta

Designe que debe ser de solo lectura

En su administrador de modelos, puede especificar que ciertos campos no se modifiquen.

class ProfileAdmin(admin.ModelAdmin):
    readonly_fields = ('source', 'campaign')

Simplemente colóquelo en su admin.py y luego, cuando pueda registrar su sitio, use esto:

admin.site.register(Profile, ProfileAdmin)

En lugar de lo que probablemente esté usando actualmente, que sería

admin.site.register(Profile)
0
Matthew Gaiser 3 oct. 2019 a las 14:15

Puede enumerar los campos que desee en ambos fields y readonly_fields.

class AuthorAdmin(admin.ModelAdmin):
    fields = ('name', 'title')
    readonly_fields = ('name', 'title')
0
Higor Rossato 3 oct. 2019 a las 14:05

Básicamente, si desea deshabilitar la editabilidad del modelo, puede hacer uso del marco de permisos de Django Admin, de esta manera:

class PersonAdmin
    def has_change_permission(self, request, obj=None):
        # only allows superusers to edit
        return request.user.is_superuser

También puede probar el readonly_field como:

class PersonAdmin
    readonly_fields = ('name','sex',)

Pero el problema de hacer esto es que verá los botones de guardar en la página de edición a pesar de que no se permite cambiar nada, lo que probablemente no sea lo que desea

1
Jason Yang 4 oct. 2019 a las 06:15
58220802