我尝试构建API以将某些对象保存到用户喜欢的内容。 我有这个用户档案的类:
class Profile(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(blank=False, null=False, unique=True)
first_name = models.CharField(blank=True, null=True, max_length=255)
last_name = models.CharField(blank=True, null=True, max_length=255)
# some enother fields
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['first_name', 'last_name']
用于个人资料的tastypie-API:
class ProfileResource(ModelResource):
class Meta:
queryset = Profile.objects.all()
resource_name = 'profiles'
allowed_methods = ['get', 'patch']
authentication = Authentication()#MultiAuthentication(ApiKeyAuthentication(), SessionAuthentication())
authorization = Authorization()
与简档相关的对象
class News(models.Model):
title = models.CharField(blank=False, null=False, max_length=255, verbose_name=u'Заголовок')
add_to_favorite=models.ManyToManyField('profiles.Profile', related_query_name='favorite_news', blank=True)
class NewsResource(ModelResource):
add_to_favorite = fields.OneToManyField(
'profiles.api.ProfileResource',
attribute='add_to_favorite',
full=False, blank=True, null=True)
class Meta:
queryset = News.objects.all()
resource_name = 'news'
allowed_methods = ['get', 'patch']
现在我尝试执行此请求
{
"id": 1,
"add_to_favorite":[
{"id":3}
]
}
得到错误:IntegrityError: column email is not unique
。
但是列电子邮件是唯一的。数据库中的所有电子邮件都是唯一的。 如何修复我的模型和资源来解决这个问题?
感谢名单!
答案 0 :(得分:0)
您的要求
{
"id": 1,
"add_to_favorite":[
{"id":3}
]
}
使用pk = 3创建News
,使用pk = 3创建UserProfile
。
此请求:
{
"id": 1,
"add_to_favorite":['/api/v1/profile/3/']
}
使用pk = 1创建News
并将UserProfile
与pk = 3附加到add_to_favorite
字段。