私はDjangoプロジェクトを持っています。モデルはStructure
とBracket
です。ブラケットは構造体への外部キーを持ちます(つまり、1対多、1つの構造体には大括弧があります)。私は、管理サイトのためにTabularInline
を作成しました。そのため、構造上に括弧のテーブルがあります。私は、あなたが同じ構造上の別のブラケットと競合するブラケットを持つことができないいくつかの余分な検証を行うにはいくつかのカスタムclean
方法でフォームセットのカスタムを追加などInlineFormsetのクリーンメソッドのテスト
管理者は、次のようになります。
class BracketInline(admin.TabularInline):
model = Bracket
formset = BracketInlineFormset
class StructureAdmin(admin.ModelAdmin):
inlines = [
BracketInline
]
admin.site.register(Structure, StructureAdmin)
そのすべての作品、および検証作品:
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(フォームセットの検証のために)1ができる意味をこれを行う。
どうしてこれが機能しないのですか?インラインformsetのカスタムclean()/ validationをテストするにはどうすればよいですか?
何BracketInlineFormsetの宣言は次のようになりますか? –
@JohnMeeインラインフォームセットコードが質問に追加されました – Rory