我想在我的Django模型中存儲字符串列表中的字段(我不想使用相關字段出於某些原因,只驗證用戶發送了正確的列表)。如何使ModelSerializer DRF中的ListField不是必需的
我有它正確的工作,問題是,我不成功,當通過Django REST框架更新對象時,這個字段不是強制性的。
這是我的實現,我測試了一些變化具有相同的結果
class SomeModel(models.Model):
hashtags = models.CharField(max_length=512, default=None, null=True, blank=True)
@property
def hashtags_as_list(self):
""" Hashtags are stored on DB as a text json convert to object again
"""
return json.loads(self.hashtags) if self.hashtags else None
@hashtags_as_list.setter
def hashtags_as_list(self, value):
""" Hashtags are stored on DB as a text json of the list object
"""
self.hashtags = json.dumps(value)
class SomeModelSerializer(serializers.ModelSerializer):
hashtags = serializers.ListField(
source='hashtags_as_list',
default = [],
required = False,
child = serializers.CharField(min_length=3, max_length=32, required=False)
)
當我穿上可瀏覽API,檢查查詢發送哈希標籤空白,我只得到錯誤。
------WebKitFormBoundary4L5MFBPrRA0QDqFL
Content-Disposition: form-data; name="hashtags"
------WebKitFormBoundary4L5MFBPrRA0QDqFL
和錯誤如下:
{
"hashtags": [
"This field may not be blank."
]
}
你會得到什麼錯誤? –
你試過添加'required = False'嗎? [文檔](http://www.django-rest-framework.org/api-guide/fields/#required)以供參考。 – Hevlastka
我已將錯誤添加到答案中,還需要= False,它什麼都不做。 – Chemary