मेरे पास 2 मॉडल, Structure
और Bracket
के साथ एक Django प्रोजेक्ट है, ब्रैकेट के पास संरचना के लिए एक विदेशीकी है (यानी एक से कई, एक संरचना में कई ब्रैकेट हैं)। मैंने व्यवस्थापक साइट के लिए TabularInline
बनाया है, ताकि संरचना पर ब्रैकेट की एक तालिका होगी। मैं एक कस्टम के लिए कुछ अतिरिक्त सत्यापन करने के लिए कुछ एक कस्टम clean
विधि के साथ formset कहा, यदि आप एक ब्रैकेट है कि एक ही संरचना पर एक और ब्रैकेट के विरोध में है नहीं कर सकते हैं आदिपरीक्षण इनलाइनफॉर्मसेट स्वच्छ तरीके
व्यवस्थापक इस तरह दिखता है:
class BracketInline(admin.TabularInline):
model = Bracket
formset = BracketInlineFormset
class StructureAdmin(admin.ModelAdmin):
inlines = [
BracketInline
]
admin.site.register(Structure, StructureAdmin)
बस इतना ही काम करता है, और मान्यता काम करता है:
BracketInlineFormset
सिर्फ स्वच्छ विधि है।
हालांकि अब मैं अपने जटिल फॉर्मेट सत्यापन तर्क का परीक्षण करने के लिए कुछ अनजान लिखना चाहता हूं।
मेरी पहली ज्ञात-अच्छे संस्कार मान्य करने के लिए प्रयास है:
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 सत्यापन के लिए) एक अर्थ है सकते हैं यह करो।
यह कैसे काम नहीं कर रहा है? मैं अपने इनलाइन फॉर्मेट के लिए कस्टम क्लीन()/सत्यापन का परीक्षण कैसे करूं?
क्या BracketInlineFormset की घोषणा की तरह लग रहा है? –
@JohnMee इनलाइन फॉर्मेट कोड प्रश्न में जोड़ा गया – Rory