Checklist
Steps to reproduce
import django
django.setup()
from django.contrib.auth import get_user_model
from django.db import models
from django.conf import settings
from rest_framework import serializers, test
class Item(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
item_number = models.IntegerField()
class Meta:
unique_together = (('user', 'item_number'),)
class ItemSerializer(serializers.ModelSerializer):
user = serializers.PrimaryKeyRelatedField(read_only=True,
default=serializers.CurrentUserDefault())
class Meta:
model = Item
fields = ('id', 'item_number', 'user')
User = get_user_model()
user = User.objects.create_user(username='asdf')
request = test.APIRequestFactory().post('/')
request.user = user
item = Item.objects.create(user=user, item_number=3)
data = {'item_number': item.item_number}
context = {'request': request}
serializer = ItemSerializer(data=data, context=context)
assert not serializer.is_valid(), 'Should be False!'
Expected behavior
The serializer should not be valid. This is the case using djangorestframework == 3.3.0
Actual behavior
The serializer is valid. This is the case using djangorestframework == 3.4.0
I've tracked the root of the issue and it seems to be pull request #4192, where a new condition is added to get_unique_together_validators(): "and not field.read_only"
Checklist
masterbranch of Django REST framework.Steps to reproduce
Expected behavior
The serializer should not be valid. This is the case using djangorestframework == 3.3.0
Actual behavior
The serializer is valid. This is the case using djangorestframework == 3.4.0
I've tracked the root of the issue and it seems to be pull request #4192, where a new condition is added to
get_unique_together_validators(): "and not field.read_only"