Sim, é possível definir uma condição dentro do Model do Django para habilitar ou desabilitar um campo com base no valor de outro campo. Uma maneira de fazer isso é sobrescrever o método init() do Model e definir a lógica para habilitar ou desabilitar o campo nesse método.
Você pode fazer algo assim:
class Jazigo(models.Model):
sepultado_local = models.BooleanField(default=True)
sepultamento_externo = models.ForeignKey(Cemiterio, on_delete=models.CASCADE, blank=True, null=True)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if not self.sepultado_local:
self._meta.get_field('sepultamento_externo').blank = False
self._meta.get_field('sepultamento_externo').null = False
else:
self._meta.get_field('sepultamento_externo').blank = True
self._meta.get_field('sepultamento_externo').null = True
O código acima sobrescreve o método init() do Model Jazigo. Dentro deste método, você pode verificar o valor do campo sepultado_local. Se o valor for False, o campo sepultamento_externo é habilitado definindo o blank e o null como False. Caso contrário, o campo é desabilitado definindo o blank e o null como True.
Note que adicionei os parâmetros blank=True e null=True na definição do campo sepultamento_externo, pois ele pode ser opcional (quando desabilitado) ou obrigatório (quando habilitado).