Ho un progetto Django, con 2 modelli, uno Structure
e Bracket
, il Bracket ha una Chiave Straniera in una Struttura (vale a dire uno-a-molti, una Struttura ha molte Parentesi). Ho creato un TabularInline
per il sito di amministrazione, in modo che ci fosse una tabella di parentesi sulla struttura. Ho aggiunto una consuetudine formset con un po 'un metodo personalizzato clean
a fare un po' di validazione in più, non si può avere una staffa che è in conflitto con un altro staffa sulla stessa struttura eccTesting InlineFormset metodi puliti
L'amministratore si presenta così:
class BracketInline(admin.TabularInline):
model = Bracket
formset = BracketInlineFormset
class StructureAdmin(admin.ModelAdmin):
inlines = [
BracketInline
]
admin.site.register(Structure, StructureAdmin)
il BracketInlineFormset
deve solo il metodo pulito:
che tutte le opere, e le opere di convalida.
Tuttavia ora voglio scrivere alcuni unittest per testare la mia logica di validazione formset complessa.
Il mio primo tentativo di convalidare i valori-buoni noti è:
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())
tuttavia che non funziona e genera l'eccezione:
======================================================================
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'
----------------------------------------------------------------------
Il Django documentation (per formset convalida) implica uno può Fai questo.
Come mai questo non funziona? Come posso testare la clean()/validazione personalizzata per il mio formset in linea?
Qual è la dichiarazione di BracketInlineFormset assomiglia? –
@JohnMee codice formset inline aggiunto alla domanda – Rory