我想在django中创建一个自定义用户,但我有很多问题。这里是mi代码:
models.py
class Profesionales(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
dni = models.CharField(max_length=9)
numColegiado = models.CharField(max_length=8)
valoracionMedia = models.FloatField()
numVotos = models.IntegerField()
def __str__(self):
return self.numColegiado, self.user.first_name
Serializers.py
class ProfesionalesSerializer(serializers.ModelSerializer):
class Meta:
model = Profesionales
fields = ('numColegiado')
class UserSerializer(serializers.ModelSerializer):
profesionales = ProfesionalesSerializer
class Meta:
model = User
fields = (
'id', 'username', 'email', 'first_name', 'last_name', 'password', 'profesionales'
)
def create(self, validated_data):
profesional_data = validated_data.pop('profesionales')
user = User.objects.create(**validated_data)
Profesionales.objects.create(**profesional_data)
return user
views.py
#Listar todos los profesionales o crear uno
#profesionales/
class ProfesionalesList(APIView):
def get(self, request ):
profesionales = User.objects.all()
profesionalSerializer = UserSerializer(profesionales, many=True)
return Response(profesionalSerializer.data)
def post(self, request):
profesionalSerializer = UserSerializer(data=request.data)
if profesionalSerializer.is_valid():
profesionalSerializer.save()
return Response(profesionalSerializer.data, status=status.HTTP_201_CREATED)
else:
return Response(profesionalSerializer.errors, status=status.HTTP_400_BAD_REQUEST)
错误:
OperationalError at /profesionales/
no such column: profesionales_profesionales.user_id
Request Method: GET
Request URL: http://127.0.0.1:8000/profesionales/
Django Version: 1.11.6
答案 0 :(得分:1)
试
Profesionales.objects.create(user=user, **profesional_data)