python中的外键序列化

时间:2017-09-18 03:20:06

标签: django api serialization

我有合适的模特。应用程序在MacOS上工作,但在linux上我有错误

  

'NoneType'对象没有属性'id'

当我从管理员添加任务时,我会犯错误

  

(1366,“字符串值不正确:'\ xD0 \ xBE \ xD1 \ x80 \ xD0 \ xBF ......'   对于第1行“'列'的列')

from rest_framework import serializers
from users.models import User
from task.models import Task


class UserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = ('id', 'username', 'first_name', 'last_name', 'user_type', 'balance')


class TaskSerializer(serializers.ModelSerializer):
    assignee = serializers.SerializerMethodField()
    created_by = serializers.SerializerMethodField()

    class Meta:
        model = Task
        fields = ('id', 'title', 'description', 'money', 'assignee', 'created_by')

    def get_assignee(self, obj):
        return {
            'id': obj.assignee.id,
            'username': obj.assignee.username,
            'first_name': obj.assignee.first_name,
            'last_name': obj.assignee.last_name,
            'user_type': obj.assignee.user_type,
            'balance': obj.assignee.balance
        }

    def get_created_by(self, obj):
        return {
            'id': obj.created_by.id,
            'username': obj.created_by.username,
            'first_name': obj.created_by.first_name,
            'last_name': obj.created_by.last_name,
            'user_type': obj.created_by.user_type,
            'balance': obj.created_by.balance,
        }

1 个答案:

答案 0 :(得分:0)

重新安装MySQL中的所有内容,现在可以正常运行。