Как запретить изменять существующие объекты в Inline'ах в django?

Есть модель "клиент", для которого при создании создаётся первый платёж. Как сделать так, чтобы в форме изменения клиента нельзя было редактировать, но можно было просматривать инлайны тех платежей, которые были созданы?

class CashPaymentAdmin(admin.ModelAdmin):

    def get_readonly_fields(self, request, obj=None):
        if obj:
            return ['total', 'date', 'client', 'id']
        else:
            return []


class CashPayment(models.Model):

    total = models.PositiveIntegerField(verbose_name='Сумма платежа', blank=False, null=False)
    date = models.DateField(verbose_name='Дата платежа', blank=False)
    client = models.ForeignKey(TreeNode, verbose_name='Клиент')


class CashPaymentInline(admin.StackedInline):
    model = CashPayment
    extra = 1
    formset = RequiredInlineFormSet
    can_delete = False
  • Вопрос задан
  • 3616 просмотров
Решения вопроса 1
@FireGM
Если просто для админки и только вы будете иметь доступ, то
class CashPaymentAdmin(admin.ModelAdmin):
    readonly_fields = ('total',)


А если будет где-то еще, то переопределять метод save у модели, дополнить проверками, изменить шаблоны админки, а лучше написать свою админку. Безопасность же.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы