He cambiado mi objeto para tener una nueva propiedad requerida en v2. Cuando intento buscar un objeto v1 desde el almacén de datos, obtengo BadValueError porque v1 no tiene la propiedad requerida. Cuál es la mejor manera de introducir nuevas propiedades requeridas en los datos existentesCómo introducir la propiedad requerida en GAE
5
A
Respuesta
6
Resolvería este problema usando la biblioteca mapreduce.
En primer lugar, registrar el asignador de mapreduce.yaml
:
mapreduce:
- name: fixing required property
mapper:
input_reader: mapreduce.input_readers.DatastoreInputReader
handler: your handler
params:
- name: entity_kind
default: main.ModelV2
continuación, definir una función process
para modificar las entidades:
from mapreduce import operation as op
def process(entity):
if not entity.newproperty :
entity.newproperty = None
yield op.db.Put(entity)
Si usted está tratando con un número relativamente pequeño de entidades, usted podría evite mapreduce modificando directamente sus entidades con algo como esto:
entities = ModelV2.all()
for entity in entities :
if not entity.newproperty :
entity.newproperty = None
entity.put()
3
Tendrá que agregarlo como una propiedad opcional para su modelo, buscar cada entidad existente, agregarle la propiedad (generando un valor razonable de alguna manera), luego put() la entidad. Una vez que todas sus entidades existentes hayan sido "actualizadas", puede hacer que la propiedad sea requerida.
La API de mapreduce de AppEngine debería hacer esto bastante fácil.
Cuestiones relacionadas
- 1. ¿Cómo hacer una propiedad requerida en C#?
- 2. ModelState.IsValid no excluye la propiedad requerida
- 3. json.net propiedad requerida no se encuentra en JSON
- 4. Falta la propiedad requerida: \t La propiedad og: url es obligatoria, pero no está presente
- 5. Validación de la selección requerida en DropDownList
- 6. Cómo activar Spring @Autowired propiedad requerida a falso para la prueba?
- 7. ¿Cómo puedo refactorizar la cláusula else requerida?
- 8. PHP: Detectar la versión requerida
- 9. Falta la biblioteca requerida en eclipse para la biblioteca no requerida
- 10. Detectar introducir presionar en JTextField
- 11. No se puede iniciar el depurador. La propiedad requerida 'LocalDebuggerWorkingDirectory' falta o está vacía
- 12. Cómo hacer que una propiedad se pueda anular en JPA - GAE/J?
- 13. Persistencia de Gae Jdo en la relación propiedad uno-a-muchos con navegación bidireccional
- 14. campo Fecha que da un error en la validación requerida
- 15. Validación de WPF al introducir la tecla
- 16. ¿Busca introducir pestañas en la aplicación basada en documentos, ideas?
- 17. Introducir fórmula celular usando VBA
- 18. Infraestructura requerida para TDD?
- 19. RoR en GAE?
- 20. ¿Cómo implementar efectivamente sesiones en GAE?
- 21. ¿Cómo actualizar el GAE SDK?
- 22. ¿Cuándo se lanza la ConcurrentModificationException en GAE?
- 23. ¿Cómo renderizar etiquetas en Flask/GAE?
- 24. Advertencia: el elenco aumenta la alineación requerida
- 25. Determine la versión PHP mínima requerida
- 26. Cómo introducir fecha y hora en el archivo de registro
- 27. ¿Cómo introducir AOP en el desarrollo de software productivo?
- 28. Ext.loader no habilitado ¿Falta la información requerida?
- 29. KnockoutValidation y la regla condicional requerida
- 30. .Net KeyEventArgs volver vs introducir
Como una adición a otras respuestas, si hay un valor predeterminado sensato, simplemente puede configurar eso en el modelo, lo que evitará errores. –