이 모델은 다음과 같은 고려 외래 키 필드와 모델에 대한 사용자 정의 청소 방법 :장고 관리자 -
class Arena(models.Model):
crowd_capacity = models.PositiveInteger()
# more fields here
class Section(models.Model):
name = models.CharField(max_length=10)
crowd_capacity = models.PositiveInteger()
arena = models.ForeignKey(Arena, related_name='sections')
admin.py :
class SectionInline(admin.StackedInline):
model = Section
fk_name = 'arena'
extra = 1
class ArenaAdmin(admin.ModelAdmin):
inlines = [
SectionInline,
]
내가 확인하는 검증 방법을 추가 할 것인지의 합 모든 section.crowd_capacity가 total arena.crowd_capacity를 초과하지 않습니다.
처음에는 깨끗한 메서드로 사용자 정의 SectionFormSet을 작성하려고했지만 arena.crowd_capacity를 얻는 방법을 알지 못했습니다.
나는 또한 Arena에 깨끗한 방법을 추가하려고 시도했지만 멋진 빨간색 검증 오류를 보여 주지만 문제를 해결할 수는 없습니다. 모든 섹션을 저장 한 후에 Arena clean 메서드가 실행되는 것처럼 보이고 문제가 발생해도 section.crowd_capacity 및 w.e 섹션을 변경하면 아무 효과가 없습니다.
내가 시도 검증 방법 :
def clean(self):
super(Arena, self).clean()
capacity = 0
for s in self.sections.all():
capacity += s.crowd_capacity
if capacity > self.crowd_capacity:
raise ValidationError('The sum of all sections crowd capacity '
'exceeds arena crowd capacity')