【发布时间】:2020-10-28 00:02:47
【问题描述】:
以下是我的详细信息。
models.py
class Employee(models.Model):
EmployeeId = models.AutoField(primary_key=True, db_column='EmployeeId')
EmployeeCode = models.CharField(max_length=50, unique=True, null=False, blank=False)
EmployeeName = models.CharField(max_length=50)
EmployeeStatus = models.SmallIntegerField(default=1, null=True, blank=True)
CreatedDate = models.DateField(null=True, default=None, blank=True)
CreatedUser = models.ForeignKey(Login, on_delete=models.PROTECT, db_column='CreatedUser',
related_name='CreatedUser', null=True, default=None, blank=True)
Device = models.ManyToManyField(Device, through='EmployeeDevice')
class Meta:
db_table = "Employee"
class EmployeeDevice(models.Model):
EmpDeviceId = models.AutoField(primary_key=True, db_column='EmpDeviceId')
Employee = models.ForeignKey(Employee, db_column='EmployeeId', on_delete=models.CASCADE)
Device = models.ForeignKey(Device, db_column='DeviceId', on_delete=models.CASCADE)
class Meta:
db_table = "EmployeeDevice"
serializer.py
class EmployeeSerializer(serializers.ModelSerializer):
class Meta:
model = Employee
fields = '__all__'
views.py
@api_view(['PUT'])
@permission_classes([IsAuthenticated])
def employee_update(request):
try:
login = Login.objects.get(UserId=1)
emp_serializer = EmployeeSerializer(data=request.data)
if emp_serializer.is_valid():
emp_serializer.save()
device = Device.objects.all()
for devicedata in device:
emp_serializer.Device.add(devicedata)
else:
logging.getLogger("error_logger").exception(emp_serializer.errors)
return Response(emp_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
except Exception as ex:
logging.getLogger("error_logger").exception(repr(ex))
return Response({'Exception': repr(ex)}, status=status.HTTP_400_BAD_REQUEST)
这是我的代码 但它不能正常工作 设备详细信息未保存显示错误 "Exception": "AttributeError("'EmployeeSerializer' 对象没有属性 'Device'",)" 而且我想用现有数据保存 CreatedDate 和 CreatedUser 。 以及插入后如何获取主键值?
我该怎么做?
【问题讨论】:
标签: python django django-models django-rest-framework django-serializer