[英]Django Rest Framework - Append JSON to Model Serialization
我有一個非常簡單的模型,並且我已經在模型上創建了一個屬性,本質上將子數據作為JSON返回。 該屬性很簡單:
@property
def question_data(self):
from api.models import TemplateQuestion
questions = TemplateQuestion.objects.filter(template__id=self.template.id)
question_dict = [obj.as_dict() for obj in questions]
return(json.dumps(question_dict, separators=(',', ': ')))
哪個工作並輸出有效的JSON。 那就是說我完全不知道如何將該屬性作為JSON而不是像這樣的字符串添加到Serializer中
{
"questions": "[{\"sequence\": 2,\"next_question\": \"\",\"modified_at\": \"2016-01-27T19:59:07.531872+00:00\",\"id\": \"7b64784e-a41d-4019-ba6e-ed8b31f99480\",\"validators\": []},{\"sequence\": 1,\"next_question\": null,\"modified_at\": \"2016-01-27T19:58:56.587856+00:00\",\"id\": \"99841d91-c459-45ff-9f92-4f75c904fe1e\",\"validators\": []}]"
}
它對JSON進行了分類,而我需要將其作為正確的JSON。
序列化器可能太基礎了,但是我有一段時間沒有使用DRF了,也從未嘗試將JSON附加到序列化的輸出中。
class BaseSerializer(serializers.ModelSerializer):
class Meta:
abstract = True
class SurveySerializer(BaseSerializer):
included_serializers = {
'landing_page': 'api.serializers.LandingPageSerializer',
'trigger': 'api.serializers.TriggerSerializer',
'template': 'api.serializers.TemplateSerializer'
}
questions = serializers.ReadOnlyField(source='question_data')
class Meta:
model = Survey
fields = ('id',
'name',
'slug',
'template',
'landing_page',
'trigger',
'trigger_active',
'start_date',
'end_date',
'description',
'fatigue_limit',
'url',
'questions',)
meta_fields = ('created_at', 'modified_at')
我要補充一點,我也正在使用Django Rest Framework JSON API格式,但是我認為最后我只是不了解如何將JSON附加到模型的序列化中,而不會將其作為字符串返回。
您不應該將方法的結果轉儲為JSON。 只需返回字典即可; DRF的串行器將負責對其進行轉換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.