Tôi có một dự án Django, với 2 mô hình, Structure
và Bracket
, Giá đỡ có khóa ngoại cấu (tức là một-nhiều, một Cấu trúc có nhiều Chân đế). Tôi đã tạo ra một TabularInline
cho trang quản trị, để có một bảng Chân đế trên Cấu trúc. Tôi đã thêm một tùy chỉnh formset với một số phương pháp tùy chỉnh clean
để làm thêm một số xác nhận, bạn không thể có một giá đỡ xung đột với Bracket khác trên cấu trúc tương tự, vvThử nghiệm phương thức làm sạch InlineFormset
Các admin trông như thế này:
class BracketInline(admin.TabularInline):
model = Bracket
formset = BracketInlineFormset
class StructureAdmin(admin.ModelAdmin):
inlines = [
BracketInline
]
admin.site.register(Structure, StructureAdmin)
các BracketInlineFormset
chỉ có phương pháp làm sạch:
Đó là tất cả các công trình, và các công trình xác nhận.
Tuy nhiên bây giờ tôi muốn viết một số unittest để kiểm tra logic xác nhận formset phức tạp của tôi.
nỗ lực đầu tiên của tôi để xác nhận giá trị được biết đến-tốt là:
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())
Tuy nhiên điều đó không làm việc và làm tăng ngoại lệ:
======================================================================
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'
----------------------------------------------------------------------
Các Django documentation (ví formset xác nhận) ngụ ý người ta có thể làm cái này.
Cách tính năng này không hoạt động? Làm cách nào để kiểm tra tùy chỉnh()/xác nhận hợp lệ cho biểu mẫu nội tuyến của tôi?
Tuyên bố của BracketInlineFormset trông như thế nào? –
@JohnMee mã định dạng nội tuyến được thêm vào câu hỏi – Rory