Bạn cần sử dụng kỹ thuật được mô tả trong this post để có thể chuyển các tham số. Tín dụng cho tác giả đó cho một bài đăng tuyệt vời. Bạn đạt được điều này trong một số bộ phận:
Một hình thức nó sẽ nhặt thông số bổ sung
Ví dụ từ câu hỏi liên quan:
def __init__(self, *args, **kwargs):
someeobject = kwargs.pop('someobject')
super(ServiceForm, self).__init__(*args, **kwargs)
self.fields["somefield"].queryset = ServiceOption.objects.filter(
somem2mrel=someobject)
Hoặc bạn có thể thay thế mã sau với
self.fields["somefield"].initial = someobject
Trực tiếp và hoạt động.
Một cà ri hình thức thiết lập khởi động:
formset = formset_factory(Someform, extra=3)
formset.form = staticmethod(curry(someform, somem2mrel=someobject))
Đó giúp bạn để đi qua các tham số hình thức tùy chỉnh. Bây giờ những gì bạn cần là:
Một máy phát điện để có được các thông số ban đầu khác nhau của bạn
Tôi đang sử dụng này:
def ItemGenerator(Item):
i = 0
while i < len(Item):
yield Item[i]
i += 1
Bây giờ, tôi có thể làm điều này:
iterdefs = ItemGenerator(ListofItems) # pass the different parameters
# as an object here
formset.form = staticmethod(curry(someform, somem2mrel=iterdefs.next()))
Xin chào! Mỗi đánh giá của phương pháp form
đang được đánh giá ở các phần đi qua trong tham số được lặp lại. Chúng ta có thể lặp lại những gì chúng ta thích, vì vậy tôi đang sử dụng thực tế đó để lặp qua một tập các đối tượng và chuyển giá trị của mỗi đối tượng vào như một tham số ban đầu khác.
Tôi có vấn đề tương tự với OP. Tôi đang cố gắng tạo một biểu mẫu với nhiều biểu mẫu, với mỗi biểu mẫu có tập hợp tùy chọn duy nhất của riêng nó cho một phần tử chọn (tức là "lựa chọn"). Tôi hoàn toàn không thể thấy giải pháp này sẽ giúp ích gì. Tui bỏ lỡ điều gì vậy? – ACPrice