extra_kwargs takes precedence over uniqueness kwargs (#4349)

This commit is contained in:
Tom Christie 2016-08-02 14:33:15 +01:00 committed by GitHub
parent 5500b265bc
commit a9a097496e
2 changed files with 21 additions and 3 deletions

View File

@ -1324,8 +1324,7 @@ class ModelSerializer(Serializer):
# Update `extra_kwargs` with any new options.
for key, value in uniqueness_extra_kwargs.items():
if key in extra_kwargs:
extra_kwargs[key].update(value)
else:
value.update(extra_kwargs[key])
extra_kwargs[key] = value
return extra_kwargs, hidden_fields

View File

@ -976,3 +976,22 @@ class TestModelFieldValues(TestCase):
source = OneToOneSourceTestModel(target=target)
serializer = ExampleSerializer(source)
self.assertEqual(serializer.data, {'target': 1})
class TestUniquenessOverride(TestCase):
def test_required_not_overwritten(self):
class TestModel(models.Model):
field_1 = models.IntegerField(null=True)
field_2 = models.IntegerField()
class Meta:
unique_together = (('field_1', 'field_2'),)
class TestSerializer(serializers.ModelSerializer):
class Meta:
model = TestModel
extra_kwargs = {'field_1': {'required': False}}
fields = TestSerializer().fields
self.assertFalse(fields['field_1'].required)
self.assertTrue(fields['field_2'].required)