Как можно создать модель, которая не может быть изменена администратором? - PullRequest
0 голосов
/ 03 октября 2019

Мне нужно создать модель Джанго, которая не может быть создана администратором, но он должен иметь возможность ее увидеть. Это содержание будет введено с сайта. Как я могу это сделать?

Ответы [ 3 ]

1 голос
/ 04 октября 2019

В основном, если вы хотите отключить возможность редактирования модели, вы можете использовать структуру разрешений Django Admin, например:

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

Вы также можете попробовать поле readonly__ например:

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

Но проблема этого заключается в том, что вы увидите кнопки сохранения на странице редактирования, несмотря на то, что ничего нельзя изменить, что, вероятно, не то, что вы хотите

0 голосов
/ 03 октября 2019

Укажите, что он должен быть доступен только для чтения.

В вашем администраторе моделей вы можете указать, что определенные поля не должны изменяться.

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

Просто поместите это в свой admin.py, а затем, когда вам нужно будет зарегистрировать свой сайт, используйте это:

admin.site.register(Profile, ProfileAdmin)

вместо того, что вы, вероятно, используете в настоящее время, что будетбыть

admin.site.register(Profile)
0 голосов
/ 03 октября 2019

Вы можете перечислить нужные поля в fields и readonly_fields.

class AuthorAdmin(admin.ModelAdmin):
    fields = ('name', 'title')
    readonly_fields = ('name', 'title')
...