Works just fine:
import macros
macro model(name: string; body: untyped): untyped =
echo treeRepr body
model "Person":
field Name(string):
max_length = 128
field Age(int):
unsigned
validate Age > 20
The only thing you need to watch out for is that every overload of model agrees on the position of the untyped parameter (annoying, I know, but documented).