중첩 된 개체를 업데이트하는 데 문제가 있습니다. 그래서 나는 구조가 이것과 같은 두 개의 모델을 가지고 : 완벽 지금까지Django-Rest-Framework. 두 테이블을 업데이트 중
class EmployeeEventUserSerializer(serializers.ModelSerializer):
class Meta:
model = EmployeeEvent_Users
fields = ('id', 'employee',)
class EmployeeEventSerializer(serializers.ModelSerializer):
employee_event_users = EmployeeEventUserSerializer(required=True, many=True)
class Meta:
model = EmployeeEvent
fields = ('event_name', 'start_date', 'end_date', 'employee_event_users',)
def create(self, validated_data):
request = self.context.get('request')
employee_event = EmployeeEvent.objects.create(
event_name=validated_data['event_name'],
start_date=validated_data['start_date'],
end_date=validated_data['end_date'],
# etc ...
)
employeeEventUsers_data = validated_data.pop('employee_event_users', [])
for employeeEventUser_data in employeeEventUsers_data:
employeeEvent_users = EmployeeEvent_Users.objects.create(
employee_event=employee_event,
employee=employeeEventUser_data['employee'],
)
employee_event.employee_event_users = employeeEventUsers_data;
return employee_event
def update(self, instance, validated_data):
instance.event_name = validated_data['event_name']
instance.start_date = validated_data['start_date']
instance.end_date = validated_data['end_date']
instance.save()
instance.employee_event_users = validated_data.get('employee_event_users')
if instance.employee_event_users:
for employee_event_user in instance.employee_event_users:
employee_event_user_id = employee_event_user.get('employee_id', None)
if employee_event_user_id:
emp_user = EmployeeEvent_Users.objects.get(id=employee_event_user_id, employee_event=instance)
emp_user.employee = employee_event_user.get('employee', emp_user.employee)
emp_user.save()
else:
EmployeeEvent_Users.objects.create(employee_event=instance, **employee_event_user)
return instance
, 만들기 작품 및 업데이트가 작동하지 않습니다 :
class EmployeeEvent(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
event_name = models.CharField(max_length=200)
start_date = models.DateField()
end_date = models.DateField()
class EmployeeEvent_Users(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
employee_event = models.ForeignKey(EmployeeEvent, on_delete=models.CASCADE, related_name='employee_event_employee_list')
employee = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='employeeEvent_employee')
나는 다음과 같은 시리얼 라이저를 작성했습니다. EmployeeEvent 테이블이 올바르게 업데이트되고 있지만 EmployeeEvent_User 테이블은 업데이트되지 않습니다. 나는 아래 논리가 맞다고 생각하지만 뭔가를 그리워한다. 어떤 도움이라도 대단히 감사 할 것입니다. 누구든지 도와 줄 수 있습니까?
다음은 그의 모습거야. 어떤 해결책이 있습니까? –
네,'serializers.py'에서'employee_event_users'를'employeeEvent_employee'로 대체하십시오. 나는 * 그것이 당신을 위해 그것을 해결할 것이라고 생각합니다. – themanatuf