【发布时间】:2020-08-09 05:29:06
【问题描述】:
我有一个名为“following”的模型,一个用户可以使用 Django rest 框架来关注另一个用户。我正在尝试实施验证,以便您不能两次关注某人,并尝试使用内置的 UniqueTogetherValidator。
这是我的models.py的相关部分
class Following(models.Model):
user = models.ForeignKey('User', related_name='user', on_delete=models.CASCADE)
follower = models.ForeignKey('User', related_name='follower', on_delete=models.CASCADE)
还有serializers.py:
class FollowingSerializer(serializers.HyperlinkedModelSerializer):
user = serializers.CharField(source='user.username')
follower = serializers.CharField(source='follower.username')
class Meta:
model = Following
fields = ['user', 'follower']
validators = UniqueTogetherValidator(
queryset = Following.objects.all(),
fields = ['user', 'follower'],
message = "You are already following that person!"
)
我有一些现有数据:
HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"user": "mike",
"follower": "chelsea"
},
{
"user": "mike",
"follower": "chloe"
}
]
}
当我尝试使用 API 接口添加任何新的以下对象时,我收到此错误:
TypeError at /followings/
'UniqueTogetherValidator' object is not iterable
Request Method: POST
Request URL: http://127.0.0.1:8000/followings/
Django Version: 3.0.5
Exception Type: TypeError
Exception Value:
'UniqueTogetherValidator' object is not iterable
...
我哪里做错了?提前致谢!
【问题讨论】:
标签: django validation serialization django-rest-framework