Я использую Django 1.8.2 с python 2.7.3, rest framework и allauth. Я пытаюсь расширить django.contrib.auth.models.User для добавления пользовательских полей, но возвращаемый JSON пуст, и есть пользователи, созданные:Расширение модели django.contrib.auth.models.User с настраиваемыми полями в Django
В models.py
from django.contrib.auth.models import User
from django.db import models
class MyUser(models.Model):
user = models.OneToOneField(User)
black_coffee = models.IntegerField(default=0)
coffee_with_milk = models.IntegerField(default=0)
coffee_cut = models.IntegerField(default=0)
В serializers.py
from rest_framework import serializers
from cafeterias.models import MyUser
class UserSerializer(serializers.HyperlinkedModelSerializer):
# snippets = serializers.HyperlinkedRelatedField(many=True, view_name='snippet-detail', read_only=True)
class Meta:
model = MyUser
fields = ('username', 'black_coffee', 'coffee_with_milk', 'coffee_cut')
В views.py
from cafeterias.models import MyUser
from rest_framework import permissions
from rest_framework import viewsets
class UserViewSet(viewsets.ReadOnlyModelViewSet):
queryset = MyUser.objects.all()
serializer_class = UserSerializer
permission_classes = (permissions.AllowAny,
IsOwnerOrReadOnly,)
Вот результат JSON:
HTTP 200 OK Content-Type: применение/JSON Vary: Accept Allow: GET, HEAD, OPTIONS
{ "Количество": 0, "рядом": нулевой, "предыдущий": NULL, "результаты": []}
Почему вы делаете это через поле OneToOne? https://docs.djangoproject.com/en/1.8/topics/auth/customizing/#specifying-a-custom-user-model ... вы не можете напрямую обращаться к полю базовой модели (например, 'username'), если вы используете метод onetoone, и похоже, что вы в настоящее время создаете django auth 'User', не создавая связанный' MyUser' – Anentropic
Потому что я пытаюсь получить поля пользователя. Должен ли я наследовать от AbstractBaseUser. AbstractBaseUser? – david
да, расширьте 'AbstractUser', это упростит. Не забудьте установить настройку 'AUTH_USER_MODEL' https://docs.djangoproject.com/en/1.8/themes/auth/customizing/# substituting-a-custom-user-model – Anentropic