Closed
Description
Checklist
- I have verified that that issue exists against the
master
branch of Django REST framework. - I have searched for similar issues in both open and closed tickets and cannot find a duplicate.
- This is not a usage question. (Those should be directed to the discussion group instead.)
- This cannot be dealt with as a third party library. (We prefer new functionality to be in the form of third party libraries where possible.)
- I have reduced the issue to the simplest possible case.
Steps to reproduce
In DRF == 3.10.3 and below it was a valid case
# models.py
class MyModel(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE
)
date_from = models.DateField()
date_to = models.DateField()
class Meta:
unique_together = (
('date_from', 'user'),
('date_to', 'user'),
)
# serializers.py
class MyModelSerializer(serializers.ModelSerializer):
date_start = serializers.DateField(source='date_from')
date_end = serializers.DateField(source='date_to')
class Meta:
model = MyModel
fields = 'date_start', 'date_end', 'user'
data = {
'user': 1,
'date_start': '2019-11-13',
'date_end': '2019-11-14'
}
serializer = MyModelSerializer(data=data)
serializer.is_valid(raise_exception=True)
serializer.save()
In DRF == 3.11.0 I get an error in is_valid() method
~/PycharmProjects/env/staff.3.7.5/lib/python3.7/site-packages/rest_framework/utils/serializer_helpers.py in __getitem__(self, key)
146
147 def __getitem__(self, key):
--> 148 return self.fields[key]
149
150 def __delitem__(self, key):
KeyError: 'date_from'
This case is no longer valid?
It was a convenient way to redirect field names.