TL : DR : 폼 세트를 사용하여 고유 속성을 가진 여러 객체를 저장/유효성 검증하는 방법은 무엇입니까?Django formset
Machine
에는 복수 개의 Setting
(아래 모델 참조)이 있습니다. 이 설정은 기계 내에서 고유 한 순서가 있어야합니다. 이것은 Setting
모델의 Meta
클래스의 unique_together
속성을 정의하여 수행 할 수 있습니다
unique_together = (('order', 'machine'),)
을하지만, 나는 Machine
의 모든 Setting
의를 업데이트 인라인의 formset을 사용하고 있습니다. 내 formset에 다음 정보가 있다고 가정하십시오.
- 설정 1 : machine = 1; 주문 = 1
- 설정 2 : 기기 = 1; 순서 = 2
I 두 Setting
들에 순서를 전환하는 경우 :
- 1 설정 : 기계 = 1; 주문 = 2
- 설정 2 : 기기 = 1; 순서 = 1
및 다음 코드 조각을 사용하여 양식을 저장
self.object = machine_form.save()
settings = setting_formset.save(commit=False)
for setting in settings:
setting.machine = self.object
setting.save()
그럼 내가 = 주문 2 일 설정 저장하려고하지만 설정하고있어 이후 유일한 제약 조건 오류를 2에는 아직도 그 순서가 있습니다. 나는이 문제에 대한 깨끗한 해결책을 찾는 것처럼 보이지 않는다. 내 데이터의 정확성을 보장하기 위해 unique_together
제약 조건을 유지하고 싶습니다. Javascript를 사용하여 프론트 엔드에서이를 해결하는 방법을 알고 있지만 내 모델/양식을 확인하고 싶습니다. formset 행을 반복하는 것은 가능하지만 추악한가요?
class Machine(models.Model):
name = models.CharField(max_length=255)
class Setting(models.Model):
name = models.CharField(max_length=255)
machine = models.ForeignKey(Machine, on_delete=models.CASCADE)
order = models.PositiveSmallIntegerField()