У меня есть модель, которая простирается Джанго User
модели:TastyPie: ToManyField связанных ресурсы
class UserProfile(models.Model):
user = models.OneToOneField(User)
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)
contacts = models.ManyToManyField(User, related_name='contacts')
Как вы можете видеть, есть поле contacts
. С помощью этого поля каждый пользователь может иметь список контактов (например, в Skype или в социальной сети). Но я хочу использовать его в своих ресурсах тастипии. У меня есть два ресурса:
class UserProfileResource(ModelResource):
class Meta:
queryset = UserProfile.objects.all()
authentication = SessionAuthentication()
authorization = DjangoAuthorization()
allowed_methods = ['get']
resource_name = 'profile'
excludes = ['id']
include_resource_uri = False
class UserResource(ModelResource):
userprofile = fields.ToOneField(UserProfileResource, 'userprofile', null=True, full=True)
contacts = fields.ToManyField(UserProfileResource, 'contacts', related_name='contacts', null=True, full=True)
class Meta:
queryset = User.objects.all()
fields = ['first_name', 'last_name', 'email', 'date_joined', 'last_login', 'userprofile', 'contacts']
allowed_methods = ['get', 'post', 'patch']
resource_name = 'user'
detail_uri_name = 'username'
authentication = SessionAuthentication()
authorization = DjangoAuthorization()
Все в порядке, но когда я делаю запрос GET, контактные контакты не работают. Я просто не могу понять, как отображать список других пользователей в моем поле контактов в ресурсе TastyPie. Кстати, на странице администрирования Django я вижу список контактов, а также могу его редактировать.
Итак, эта реализация ресурса tastypie дает возможность получить список пользователей, добавивших текущего пользователя в собственный список контактов. Но мне нужен список контактов текущего пользователя. Что я делаю неправильно?
Это не работает, если я положил поле 'contacts' в' UserProfileResource' с ошибкой _maximum depth глубины рекурсии при вызове объекта Python_. – Gooman
Возможно, вы можете предложить какое-то решение, используя пользовательский объект User? – Gooman
О, я пропустил, что 'contact' фактически использует' UserProfileResource', он должен использовать 'UserResource', так как' contacts' является m2m в модели User, а не модель UserProfile. –