我正在编写一个mixin,它可以让我的模型很容易地被翻译成一个深刻的价值观(有点像.values(),但是遍历关系).对这些进行定义的最干净的地方似乎是模型本身,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'
}
}
Run Code Online (Sandbox Code Playgroud)
然而,Django抱怨我把这包括在内class Meta:
TypeError: 'class Meta' got invalid attribute(s): schema
Run Code Online (Sandbox Code Playgroud)
(整个堆栈跟踪在这里)
现在,我想我可以在我的mixin中巧妙地覆盖它,但是有更优雅的方式来存储这些信息吗?