두 모델 (Structure
및 Bracket
)이 포함 된 Django 프로젝트가있는 경우 브래킷에 구조에 대한 외부 키가 있습니다 (일대 다 구조에는 하나의 괄호가 많이 있음). 나는 관리 사이트에 대해 TabularInline
을 만들었으므로 구조에 대괄호 표가있게됩니다. 난 당신이 같은 구조에 다른 브라켓과 충돌하는 브라켓이없는 수있는 몇 가지 추가 검증을 할 수있는 몇 가지 사용자 정의 clean
방법의 formset 사용자 정의 추가 등InlineFormset 클린 메서드를 테스트합니다.
관리자는 다음과 같습니다
class BracketInline(admin.TabularInline):
model = Bracket
formset = BracketInlineFormset
class StructureAdmin(admin.ModelAdmin):
inlines = [
BracketInline
]
admin.site.register(Structure, StructureAdmin)
class BracketInlineFormset(forms.models.BaseInlineFormSet):
def clean(self):
… my clean code here …
모든 작품 및 검증 작업 :
BracketInlineFormset
은 깨끗한 방법이있다.
그러나 지금은 복잡한 formset 유효성 검사 로직을 테스트하기 위해 unittest를 작성하고 싶습니다. 작동하지 않습니다 그러나
data = {'form-TOTAL_FORMS': '1', 'form-INITIAL_FORMS': '0', 'form-MAX_NUM_FORMS': '', 'form-0-field1':'good-value', … }
formset = BracketInlineFormset(data)
self.assertTrue(formset.is_valid())
과 예외 제기 : 알려진 좋은 값을 검증 할 수
내 첫 번째 시도이다
======================================================================
ERROR: testValid (appname.tests.StructureTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/paht/to/project/tests.py", line 494, in testValid
formset = BracketInlineFormset(data)
File "/path/to/django/forms/models.py", line 672, in __init__
self.instance = self.fk.rel.to()
AttributeError: 'BracketInlineFormset' object has no attribute 'fk'
----------------------------------------------------------------------
(가) Django documentation (해당 formset 확인을 위해) 일을 수행 할 수 있습니다 의미를 이 작업을 수행.
어떻게 작동하지 않습니까? 인라인 formset에 대한 사용자 정의 clean()/유효성 검사를 테스트하려면 어떻게합니까?
어떤 모양의 BracketInlineForm의 선언입니까? –
@JohnMee 인라인 formset 코드가 질문에 추가되었습니다. – Rory