cuốn sách gpt4 ai đã làm

python - Django 表单自定义 : change field on other field change

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 05:33:45 27 4
mua khóa gpt4 Nike

Tôi chỉ mới đến Django được vài ngày. Bây giờ, tôi cần thay đổi cả giá trị và cách biểu thị trong một trường khi giá trị của các trường khác trong biểu mẫu tùy chỉnh thay đổi. Thay đổi MyModel tại thời điểm này làhạn chế.

ứng dụng của tôi/models.py:

lớp MyModel(models.Model):
somefield = models.IntegerField(default=0)

my-app/forms.py

lớp MyModelForm(models.Model):
someformfield = models.BooleanField(required=False)
// Ở đây nó phải là smth như sau:
// def clean(..), hoặc def save(..), hoặc def __init__(..)
nếu MyModelForm.is_valid():
# Cấu trúc if-else này sẽ 'tăng' sau mỗi lần thay đổi hộp kiểm 'someformfield':
nếu someformfield == Đúng:
trường nào đó=0
self.fields['somefield'].widget = Forms.HiddenInput()
khác:
somefield = data['somefield'] # Chỉ để sử dụng Đầu vào của người dùng
self.fields['somefield'].widget = Forms.ShownInput() # Có chuyện gì vậy, nhưng tôi chỉ cần hủy bỏ HiddenInput bằng cách nào đó - vậy nên làm thế nào?

Tôi đã thử xác định clean() như bên dưới, nhưng không làm được gì, thậm chí không tăng biểu mẫu.ValidationError:

def clean(MyModelForm, self):
clean_data = super(MyModelForm, self).clean()

nếu self.cleaned_data['someformfield']:
nếu self.cleaned_data['somefield'] != 0:
# Điều này không hiệu quả
nâng cao biểu mẫu.ValidationError(
"Lỗi!"
)
# Và theo dõi cũng không được
self.cleaned_data['somefield'] = 0
self.fields['somefield'].widget = Forms.HiddenInput()

Điều này cũng không hoạt động:

def clean(MyModelForm, self):
clean_data = super(MyModelForm, self).clean()
somefield = clean_data.get("somefield")
someformfield = clean_data.get("someformfield")

nếu trường nào đó:
#Cũng không hoạt động
nếu trường nào đó != 0:
nâng cao biểu mẫu.ValidationError(
"Lỗi!"
)
#Cũng không hoạt động
trường nào đó=0
self.fields['somefield'].widget = Forms.HiddenInput()

Có lẽ, tôi nên sử dụng một số phương pháp khác - save(..) hoặc khởi tạo(..), hoặc bất cứ điều gì, nhưng nó hoàn toàn bị nhầm lẫn trong tài liệu và không biết mục đích của từng phương pháp này là gì. Vậy tôi nên sử dụng phương pháp nào ở đây và làm thế nào?

câu trả lời hay nhất

lau dọn Phương thức chỉ nên chấp nhận một tham số, tức là self.

lớp MyModelForm(models.Model):
someformfield = models.BooleanField(required=False)

chắc chắn sạch (tự):
clean_data = self.cleaned_data
#làm công việc bạn muốn...

Về tùy chỉnh biểu mẫu python - Django: thay đổi trường khi thay đổi trường khác, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/36307788/

27 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress