Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何让数据加入Django Rest框架_Mysql_Django_Api_Rest_Django Rest Framework - Fatal编程技术网

Mysql 如何让数据加入Django Rest框架

Mysql 如何让数据加入Django Rest框架,mysql,django,api,rest,django-rest-framework,Mysql,Django,Api,Rest,Django Rest Framework,我想加入两张桌子, 我有一个模型: 雇员: class Employee(models.Model): employee_identity = models.CharField(max_length=255, blank=True, null=True) full_name = models.CharField(max_length=255, blank=True, null=True) place_birth = models.CharField(max_length=

我想加入两张桌子, 我有一个模型:

雇员:

class Employee(models.Model):
    employee_identity = models.CharField(max_length=255, blank=True, null=True)
    full_name = models.CharField(max_length=255, blank=True, null=True)
    place_birth = models.CharField(max_length=255, blank=True, null=True)
    date_birth = models.DateField(blank=True, null=True)
    role = models.CharField(max_length=255, blank=True, null=True)
    no_hp = models.CharField(max_length=255, blank=True, null=True)
    address = models.CharField(max_length=255, blank=True, null=True)
    class Meta:
        managed = False
        db_table = 'employee'
处罚:

class Penalty(models.Model):
    employee = models.ForeignKey(Employee,on_delete=models.CASCADE)
    type = models.CharField(max_length=255, blank=True, null=True)
    start_date = models.DateField(blank=True, null=True)
    end_date = models.DateField(blank=True, null=True)
    doc = models.CharField(max_length=255, blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'penalty'
My EmployeeSerializer:

class EmployeeSerializer (serializers.ModelSerializer):
    class Meta:  
        model = Employee
        fields = '__all__'
我的惩罚试金器:

class PenaltySerializer (serializers.ModelSerializer):
    class Meta:
        model = Penalty
        fields = ('employee','type','start_date','end_date')
我预期的处罚结果:

"results": [
        {
            "employee": 14871,
            "type": "low",
            "start_date": "2018-10-15",
            "end_date": "2018-10-16",
            "employee_identity": "A1738129",
            "full_name": "Full name here",
            "role": "staff"
           
        }
    ]
我已经尝试在我的序列化程序中使用它

class PenaltySerializer (serializers.ModelSerializer):
 a = EmployeeSerializer(many=True,read_only=True)
        class Meta:
            model = Penalty
            fields = ('employee','type','start_date','end_date','a')

但是“a”的结果没有出现。

我想这可能会有所帮助

class PenaltySerializer (serializers.ModelSerializer):
        employee_identity = serializers.CharField(source="employee.employee_identity")
         full_name = serializers.CharField(source="employee.full_name")
         role = serializers.CharField(source="employee.role")

        class Meta:
            model = Penalty
            fields = (
                    'employee',
                    'type',
                    'start_date',
                    'end_date', 
                   'employee_identity',
                   'full_name',
                   'role'
            )

您可以在序列化程序中执行以下操作:

class PenaltySerializer (serializers.ModelSerializer):
    class Meta:
        model = Penalty
        fields = ('employee','type','start_date','end_date')
类PenaltySerializer(serializers.ModelSerializer):
employee=serializers.SerializerMethodField()
类元:
模型=惩罚
字段='\uuuu所有\uuuu'
def get_员工(自身、对象):
返回EmployeeSerializer(object.employee.all(),many=True)

我收到错误“字段'employee'已在序列化程序PenaltySerializer上声明,但尚未包含在'fields'选项中。”尝试单独添加字段值,包括employee字段。我尝试更改字段为'all',现在错误'employee'对象没有属性'all',您不能执行'all',您应该执行'all'。或者,您应该单独添加每个字段,就像您在问题上所做的那样。同样的错误,我单独添加每个字段,但得到错误“Employee”对象没有属性“all”