python - index - Agregar atributos a la clase Meta de Django Model
unique django (1)
No sé de elegante, pero una forma pragmática es:
import django.db.models.options as options
options.DEFAULT_NAMES = options.DEFAULT_NAMES + (''schema'',)
Obviamente, esto se rompería si Django alguna vez añadiera un atributo ''esquema'' propio. Pero bueno, es un pensamiento ... siempre puedes elegir un nombre de atributo que es menos probable que choque.
Estoy escribiendo un mixin que permitirá que mis Modelos se traduzcan fácilmente en un dict profundo de valores (algo así como .values (), pero atravesando relaciones). El lugar más limpio para hacer las definiciones de estos parece estar en los propios modelos, a la la:
class Person(models.Model, DeepValues):
name = models.CharField(blank=True, max_length=100)
tribe = models.ForeignKey(''Tribes'')
class Meta:
schema = {
''name'' : str,
''tribe'' : {
''name'' : str
}
}
Person.objects.all().deep_values() => {
''name'' : ''Andrey Fedorov'',
''tribe'' : {
''name'' : ''Mohicans''
}
}
Sin embargo, Django se queja de que incluyo esto en la class Meta
con:
TypeError: ''class Meta'' got invalid attribute(s): schema
(toda la traza de pila here )
Ahora, supongo que podría anularlo detalladamente en mi mixin, pero ¿hay alguna forma más elegante de almacenar esta información?