0
Django的標註值,我有以下型號與模型字段名
class Status(object):
FIRST_STATUS = 'FS'
SECOND_STATUS = 'SS'
CHOICES = ((FIRST_STATUS, 'First Status'), (SECOND_STATUS, 'Second Status')
class MyModel(models.Model):
status = models.CharField(max_length=2, choices=Status.CHOICES)
我想註釋狀態字段,這樣的結果將持有的可讀價值,而不是狀態代碼。 這就是我要怎樣做:
MyModel.objects.annotate(status=Case(When(status=Status.FIRST_STATUS, then='First Status'), When(status=Status=SECOND_STATUS, then='Second Status'), output_field=CharField())).values('status')
結果卻是個例外:
`ValueError: The annotation 'status' conflicts with a field on the model.`<br/>
Which was not surprising because of [this][1] but what is, is that i can do this:<br/><br/>
MyModel.objects.extra(select={'status': "CASE WHEN status='FS' THEN 'First Status' WHEN status='SS' THEN 'Second Status' ELSE 'Unknown status' END"}).values('status')
爲什麼把限制的註釋,而不是驗證額外的相同的行爲?有什麼方法可以重寫註釋的限制,並保存我手動構建查詢嗎?