¿Cuál es la mejor manera de especificar un nombre de clave para el modelo NDB de App Engine?

Estoy tratando de crear un modelo ndb donde cada registro tenga un campo único "nombre". Me gustaría definir este campo como el campo nombre_clave y usarlo para buscar los registros. ¿Tengo que incluir un campo de nombre o puedo establecer de alguna manera el campo nombre_clave en una cadena arbitraria que el usuario pueda especificar siempre que sea único?

Estoy pensando en usar Model.get_or_insert para asegurarme de que los registros antiguos no se sobrescriban, pero ¿hay alguna forma de saber si el valor de retorno se creó recientemente o es preexistente? Quiero poder mostrar un mensaje de error si el usuario ingresó un nombre duplicado.

Por último, intenté crear un campo de nombre de clave en un modelo de DjangoForms que usa el modelo ndb anterior como la metaclase para poder usar djangoforms para la validación / renderización, pero por alguna razón, mis campos definidos no aparecen.

clase UserProfileForm (djangoforms.ModelForm): key_name = djangoforms.StringProperty () class Meta: model = UserProfile

Respuestas a la pregunta(1)

Su respuesta a la pregunta