...всё таки проблема глобальная. вот нижняя часть айсберга:
итак, классическая задача, которая встречается на каждом шагу. например имеем унаследованную модель:
class UserProfile(User):
gender = models.ForeignKey(
Gender,
verbose_name='Пол',
blank=True,
null=True,
)
nickname = models.CharField(
'Отображаемое имя',
max_length=50,
blank=False,
)
phone = models.CharField(
max_length=50,
blank=False,
)
skype = models.CharField(
max_length=50,
blank=False,
)
other = models.TextField(
max_length=500,
blank=False,
)
avatar = models.ImageField(
upload_to='userprofile/avatar/',
blank=True,
null=True,
)
objects = UserManager()
@classmethod
def get_new_authors_entries(self, cut_begin=0, cut_end=2):
return self.objects.filter(is_active=1, is_superuser=0)[cut_begin:cut_end]
понадобилось получить полную информацию о пользователе. например 'email', 'nickname'. эти данные находятся в разных таблицах
сериализуется только данные модели UserProfile:
new_authors = UserProfile.get_new_authors_entries(cut_begin=page_new_authors, cut_end=page_new_authors + 2)
result = serializers.serialize('json', new_authors)
return HttpResponse(json.dumps(result), content_type='application/json')
то есть в результате имеем доступ к полям модели UserProfile:
[{"pk": 4, "fields": {"phone": "2014-0921", "nickname": "\u0418\u0432\u0430\u043d \u0422\u0443\u0440\u0433\u0435\u043d\u0435\u0432 \u0451\u043f\u0442\u0430", "gender": 1, "other": "zzzz", "groups": [], "skype": "dfsdf", "avatar": "", "user_permissions": []}, "model": "app_accounts.userprofile"}, {"pk": 5, "fields": {"phone": "21", "nickname": "\u0410\u043d\u0442\u043e\u043d \u0427\u0435\u0445", "gender": 2, "other": "qqqqqq", "groups": [], "skype": "dfsdf", "avatar": "", "user_permissions": []}, "model": "app_accounts.userprofile"}]
несмотря на то, что UserProfile унаследована от User, полей можели User в ответе нет. то есть сериализация не глубокая. штатных методов для более глубокой сериализации, как я понял, нет. по крайней мере в доке удачнее этого я ничего не нашёл(но это кослыль, причём неудобный)
можно конечно данные о пользователе хранить в одной табличке, а не в двух, но суть проблемы от этого не меняется
кто может пожет подсказать как решается подобная проблема?
Updated 12 Oct. 2014, 15:24 by prozaik81-2.