【发布时间】:2015-03-12 13:58:57
【问题描述】:
我有 UserSerializer 和嵌套的 UserClientSerializer。我正在尝试更新登录用户的信息。但我收到 unique_together 验证错误。
我有以下型号: models.py
class UserClients(models.Model):
user = models.ForeignKey(User, related_name='user_clients')
client = models.ForeignKey(Client, related_name='client_users')
belongs_to = models.BooleanField(default=False)
for_future = models.BooleanField(default=False)
class Meta:
unique_together = ('user', 'client')
我还有两个序列化器。 serializers.py
class UserClientsSerializer(serializers.ModelSerializer):
class Meta:
model = UserClients
class UserSerializer(serializers.ModelSerializer):
user_clients = UserClientsSerializer(required=False, allow_null=True, many=True)
class Meta:
model = get_user_model()
exclude = ('password','username', 'date_joined', 'is_superuser')
@transaction.atomic
def create(self, validated_data):
...
@transaction.atomic
def update(self, instance, validated_data):
...
views.py
class CurrentUserDetails(RetrieveUpdateAPIView):
serializer_class = UserSerializer
permission_classes = (IsAuthenticated,)
def get_object(self):
return self.request.user
所以,当我尝试更新我的用户数据时,例如“belongs_to”为 False,我想将其更改为 False。 我的我的JSON数据是这样的。
{
"user_clients": [
{
"id": 57,
"belongs_to": true,
"for_future": false,
"user": 25,
"client": 3
}
]
}
但我收到这样的验证错误
{
"user_clients": [
{
"non_field_errors": [
"The fields user, client must make a unique set."
]
}
]
}
你对这个问题有什么想法吗?
【问题讨论】:
标签: django django-rest-framework