編輯我只想在我這樣做時引發異常BrokerSerializer(user).data并且任何值是None我使用 DRF 來序列化對象以通過 API 導出它們,我不使用它來創建對象。在序列化模型時尋找一種最簡單的方法來使字段成為必需的。API 需要一些字段不為空,所以我想提高APIMissingDataException它們中的任何一個是否為空/無。我試過:class BrokerSerializer(serializers.ModelSerializer): import_id = serializers.IntegerField(source='pk') deleted = serializers.SerializerMethodField() full_name = serializers.CharField(source='userprofile.get_display_name') phone_work = serializers.CharField(source='userprofile.contact_information.telephone') email_work = serializers.CharField(source='userprofile.contact_information.email')class Meta: model = User fields = ['import_id', 'deleted', 'full_name', 'phone_work', 'email_work'] required_fields = fieldsdef validate(self, attrs): super().validate(attrs) if not all([attrs.get(fieldname) for fieldname in self.Meta.required_fields]): raise APIMissingDataException() return attrsdef get_deleted(self, obj): return 0但是validate由于某種原因沒有調用函數。我不想明確定義所有字段只是為了required=False向它們添加參數。In [10]: b = BrokerSerializer(User.objects.first()) In [11]: b.data # It should have raised exception since there are NoneOut[11]: {'import_id': 1, 'deleted': 0, 'full_name': None, 'phone_work': None, 'email_work': None}In [12]: b = BrokerSerializer(data=User.objects.first()) In [13]: b.is_valid() Out[13]: False有沒有更舒服的方法?
添加回答
舉報
0/150
提交
取消