Me gustaría que un recurso modelo django-tastypie
en particular tenga solo un subconjunto de campos al enumerar objetos y todos los campos cuando se muestran detalles. es posible?¿Puede django-tastypie mostrar un conjunto diferente de campos en la lista y vistas de detalle de un solo recurso?
Respuesta
Debería especificar todos los campos en el ModelResource real y luego anular el método get_list
para filtrar solo los campos que desea mostrar. Consulte la implementación interna de get_list
en Resource
para ver cómo sobrescribirlo.
Sin embargo, tenga en cuenta que esto solo se aplica a las solicitudes GET, aún así debería POST/PUT/PATCH en el recurso con todos los campos si los límites de autorización le permiten hacerlo.
En una cáscara de tuerca, desea parchear en caliente la lista de campos internos antes de llamar a full_dehydrate en todos los objetos ORM devueltos por obj_get_list
.
Como alternativa, puede dejar que se produzca el mecanismo de deshidratación completo y al final eliminar los campos que no desea mostrar si no le preocupa exprimir tanto como sea posible. Por supuesto, tendría que hacer esto solo si se invoca la URL como consecuencia de la llamada get_list. Hay un método de conveniencia para este alter_list_data_to_serialize(request, to_be_serialized)
.
Just Do:
class SomeResource(Resource):
class Meta(...):
...
field_list_to_remove = [ 'field1', 'field2' ]
...
def alter_list_data_to_serialize(request, to_be_serialized):
for obj in to_be_serialized['objects']:
for field_name in self._meta.field_list_to_remove:
del obj.data[field_name]
return to_be_serialized
Hay un open issue for this en GitHub, con una serie de soluciones sugirió allí.
También puede utilizar ahora el atributo use_in
en un campo para especificar el recurso relevante para mostrar el campo. Esto puede ser o bien list
o detail
, o una devolución de llamada.
Esa debería ser la respuesta principal. Mucho más obvio y claro que los métodos predominantes. – Radagast
Este es uno de esos casos en los que debería poder cambiar la respuesta "Aprobado" para aquellos de nosotros que vengan más tarde a la fiesta. –
También se puede usar el método de deshidratación (self, bundle).
def dehydrate(self, bundle): del bundle.data['attr-to-del] return bundle
- 1. ¿Puede agregar un producto de compilación desde un proyecto diferente como recurso de paquete en XCode?
- 2. Crear un tema de formulario Symfony2 - Conjunto de campos y estilo de lista
- 3. MvC3 - el uso de vistas parciales en un área diferente
- 4. Aliasing un recurso de diseño con el mismo nombre solo calificador de pantalla diferente
- 5. formset de Django: ¿muestra campos adicionales solo cuando no hay un conjunto de datos inicial?
- 6. Lista <T> solo con un conjunto privado
- 7. Vistas de desplazamiento horizontal lista de lista
- 8. referencia a un recurso en un ResourceDictionary de un ResourceDictionary diferente en Silverlight
- 9. Siguientes enlaces anteriores de un conjunto de consultas/vistas genéricas
- 10. ¿Cómo usar un nombre de conjunto diferente para diferentes configuraciones?
- 11. Cómo mostrar campos obligatorios en un formulario de Windows
- 12. ¿El conjunto de campos debe estar en un formulario?
- 13. Concatenar dos campos para mostrar en la lista desplegable
- 14. comportamiento diferente de la lista .__ iadd__ y la lista .__ add__
- 15. Un modelo de dominio, múltiples vistas json
- 16. ¿Cómo encontrar la * posición * de un solo registro en un conjunto de registros limitados y ordenados arbitrariamente?
- 17. ¿Accesorio con un conjunto diferente y obtener tipos?
- 18. campos mutables para objetos en un conjunto Java
- 19. ¿Cómo mostrar un valor diferente para los valores de la lista desplegable/elemento seleccionado en un WPF ComboBox?
- 20. Drupal: Vistas: cómo agrupar campos
- 21. cómo establecer la altura de la lista desplegable y cómo mostrar la lista de lista desplegable siempre hacia abajo mostrar
- 22. ¿Puede Json.NET poblar campos de solo lectura en una clase?
- 23. Identificar vistas en la lista de pestañas de Visual Studio
- 24. Seleccionar un solo elemento de una lista
- 25. ¿Cómo mostrar solo términos de taxonomía con nodos asociados a en Vistas 2?
- 26. Servicios de informes: unir todos los campos en un conjunto de datos
- 27. En Perl, ¿cómo reemplazo un conjunto de caracteres con un conjunto diferente de caracteres en una sola pasada? Dada
- 28. ¿cómo se cambia el tamaño (visualmente, no programáticamente) de la vista de detalle de un UISplitViewController en un guión gráfico?
- 29. ¿Se puede ampliar la lista de favoritos utilizando un Extensor de datos?
- 30. Conjunto de resultados a la lista
Esta es una buena idea, y agradezco su respuesta. Me pregunto, sin embargo, si hay una manera de diferir los campos de la consulta original para evitar el envío de algunos campos bastante grandes a través del cable. – Carson
Entonces le sugiero que simplemente cree 2 recursos, uno que muestre todos los campos y otro que solo muestre su subconjunto en el mismo modelo. Es la forma más simple sin mucha sobrecarga. Si insistes en que sea el mismo recurso, puedes seguir mi recomendación inicial sobre la sobrecarga get_list para incluir solo tu subconjunto de campos cuando los obtengas de ORM y los serialice. – astevanovic
Debe haber 'del obj.data [field_name]'. – Mitar