Использование Django 2.0, Python 3.7 и модуля django -phonenumber-field (v 4.0.0). У меня есть модель с моим полем телефонного номера, которая мне не нужна ...
from phonenumber_field.modelfields import PhoneNumberField
...
class Coop(models.Model):
name = models.CharField(max_length=250, null=False)
type = models.ForeignKey(CoopType, on_delete=None)
address = AddressField(on_delete=models.CASCADE)
enabled = models.BooleanField(default=True, null=False)
phone = PhoneNumberField(null=True)
email = models.EmailField(null=True)
web_site = models.TextField()
Я создал этот файл web / maps / views.py для обработки запроса POST .. .
class CoopDetail(APIView):
"""
Retrieve, update or delete a coop instance.
"""
def get_object(self, pk):
try:
return Coop.objects.get(pk=pk)
except Coop.DoesNotExist:
raise Http404
def get(self, request, pk, format=None):
coop = self.get_object(pk)
serializer = CoopSerializer(coop)
return Response(serializer.data)
def put(self, request, pk, format=None):
coop = self.get_object(pk)
serializer = CoopSerializer(coop, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
и затем у меня есть этот вызов web / maps / serializers.py ...
class CoopSerializer(serializers.ModelSerializer):
type = CoopTypeField()
address = AddressTypeField()
class Meta:
model = Coop
fields = ['id', 'name', 'type', 'address', 'enabled', 'phone', 'email', 'web_site']
def to_representation(self, instance):
rep = super().to_representation(instance)
rep['type'] = CoopTypeSerializer(instance.type).data
rep['address'] = AddressSerializer(instance.address).data
return rep
def create(self, validated_data):
"""
Create and return a new `Snippet` instance, given the validated data.
"""
return Coop.objects.create(**validated_data)
def update(self, instance, validated_data):
"""
Update and return an existing `Coop` instance, given the validated data.
"""
instance.name = validated_data.get('name', instance.name)
instance.type = validated_data.get('type', instance.type)
instance.address = validated_data.get('address', instance.address)
instance.enabled = validated_data.get('enabled', instance.enabled)
instance.phone = validated_data.get('phone', instance.phone)
instance.email = validated_data.get('email', instance.email)
instance.web_site = validated_data.get('web_site', instance.web_site)
instance.save()
return instance
Но несмотря на то, что я указал, я не хочу требуемый телефон В поле номера я получаю сообщение об ошибке, сообщающее, что номера телефонов не могут быть пустыми, когда я отправляю запрос скручивания конечной точке. Когда я отправляю это JSON
{
"name": "1999",
"type": {
"name": "Coworking Space"
},
"address": {
"street_number": "222",
"route": "1212",
"raw": "222 W. Merchandise Mart Plaza, Suite 1212",
"formatted": "222 W. Merchandise Mart Plaza, Suite 1212",
"latitude": 41.88802611,
"longitude": -87.63612199,
"locality": {
"name": "Chicago",
"postal_code": "60654",
"state": 1
}
},
"enabled": true,
"phone": "",
"email": null,
"web_site": "http://www.1871.com/"
}
, я получаю эту ошибку ...
{"phone":["This field may not be blank."]}