У меня есть модель UserProfile
, которая расширяет стандартную модель Django User
:
class UserProfile(models.Model):
user = models.OneToOneField(User, related_name="profile")
avatar = models.CharField(max_length=40, default='0')
activation_key = models.CharField(max_length=40, blank=True)
key_expires = models.DateTimeField(default=django.utils.timezone.now)
def __str__(self):
return self.user.username
class Meta:
verbose_name_plural = u'User profiles'
У меня также есть два ресурса:
class UserProfileResource(ModelResource):
class Meta:
queryset = UserProfile.objects.all()
resource_name = 'profile'
allowed_methods = ['get']
и
class UserResource(ModelResource):
profile = fields.ToOneField('api.api.UserProfileResource',
'profile', full=True, null=True)
class Meta:
queryset = User.objects.all()
#fields = ['first_name', 'last_name', 'email', 'date_joined', 'profile']
fields = [ 'profile' ]
allowed_methods = ['get', 'post']
resource_name = 'user'
authentication = SessionAuthentication()
authorization = DjangoAuthorization()
detail_uri_name = 'username'
def obj_create(self, bundle, **kwargs):
return super(UserResource, self).obj_create(bundle, user=bundle.request.user)
def authorized_read_list(self, object_list, bundle):
return object_list.filter(user=bundle.request.user)
Делаю GET запрос:
http://localhost:8000/api/v1/user/<some_user>
В результате получаю:
Object { profile: null, resource_uri: "/api/v1/user/<some_user>/" }
Видно, что получаем NULL, потому что при описании ресурса UserResource
указано null=True
. Другими словами, почему-то данные не отдаются. Не могу никак разобраться.
Может, проблема в неправильном указании пути к ресурсам: 'api.api.UserProfileResource'
? Вот путь к файлу с ресурсами:
<project_name>/api/api.py