Tôi đang viết một mixin cho phép Mô hình của tôi dễ dàng được dịch thành một giá trị sâu sắc (giống như .values (), nhưng đi qua các mối quan hệ). Nơi sạch nhất để làm các định nghĩa của những vẻ là trong các mô hình bản thân, a la:Thêm các thuộc tính vào lớp Meta của Mô hình Django
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'
}
}
Tuy nhiên, Django phàn nàn về tôi bao gồm này trong class Meta
với:
TypeError: 'class Meta' got invalid attribute(s): schema
(toàn bộ stack trace here)
Bây giờ, tôi cho rằng tôi có thể ghi đè lên điều này một cách công phu trong mixin của mình, nhưng có cách nào lưu trữ thông tin này một cách thanh lịch hơn không?
Vì mục đích của hậu thế, điều đó không có tác dụng, nhưng điều này đã làm: tùy chọn.DEFAULT_NAMES = options.DEFAULT_NAMES + ('default_values',) –
Ồ ... có lẽ vì giải pháp của tôi chuyển DEFAULT_NAMES thành danh sách, trong khi tinh lọc của bạn giữ nó như một tuple. –
Rất có thể! :) –