Você pode ter as views respectivas : uma para cadastro e outra para edição.
Na de cadastro você coloca isso no campo:
db.table.field.readable = False
Acho que só a readable = False já resolva , porque assim ele não irá aparecer no form.
E na view de edição deixa o writeable e o readable ( = True ) para que no formulário ele apareça e possa ser editável.
Provavel que esteja usando o SQLFORM ai seria mais fácil ainda..
A base é ocultar ele quando você quiser .. seja usando o writeable ou o readable