CCCPaste

MIXINS IN DJANGO

class ReadonlyFieldsMixin:
    readonly_fields = ()

    def _mark_readonly_fields(self):
        for field_name in self.readonly_fields:
            self.fields[field_name].widget.attrs["readonly"] = "readonly"
        # for _, field in self.fields.items():
        #     field.widget.attrs["readonly"] = "readonly"


class UpdatePersonForm(ReadonlyFieldsMixin, PersonForm):
    readonly_fields = ("age", "last_name")

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self._mark_readonly_fields()