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

python - một dạng html, một số dạng django có liên quan với nhau - làm cách nào để lưu?

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

Có một vấn đề, tôi cần gửi hai biểu mẫu mô hình liên quan bằng một biểu mẫu html. Tôi biết cách gửi hai bảng riêng biệt, nhưng các khóa ngoại trong trường hợp các bảng mô hình liên quan đang khiến tôi phát điên.

Vấn đề là, biểu mẫu thứ hai có nhiệm vụ điền các trường có khóa ngoại vào phiên bản của biểu mẫu đầu tiên.

Trong trường hợp cụ thể này, tôi đã quyết định hợp nhất cả hai mô hình, nhưng tôi nghĩ rằng trong một số trường hợp, giải pháp cho vấn đề được mô tả sẽ hữu ích.

Hãy xem xét đoạn mã sau:

Người mẫu:

từ các mô hình nhập django.db

Cơ sở lớp học (models.Model):
tên = models.CharField(max_length=255)

lớp Cơ sởDetail(models.Model):
some_details = models.CharField(max_length=255)
cơ sở = models.ForeignKey(Cơ sở)

Mẫu django tương ứng:

từ các hình thức nhập khẩu django

lớp Cơ sởForm(forms.ModelForm):

lớp Meta:
mô hình=Cơ sở
các trường = ('tên')

lớp Cơ sởDetailForm(forms.ModelForm):

lớp Meta:
mô hình = Chi tiết cơ sở
các trường = ('some_details', 'cơ sở')

Xem để xử lý biểu mẫu:

từ nhập django.views.generic Xem

FACILITY_PREFIX = 'cơ sở'
FACILITY_DETAIL_PREFIX = 'cơ sở_chi tiết'

lớp Cơ sởCreateView (Chế độ xem):

def get(self, request, *args, **kwargs):
cơ sở_form = Cơ sởForm(tiền tố=FACILITY_PREFIX)
cơ sở_detail_form = Cơ sởDetailForm(tiền tố=FACILITY_DETAIL_PREFIX)

bối cảnh = {
'Facility_form': cơ sở_form,
'cơ sở_detail_form': cơ sở_detail_form,
}

trả về kết xuất (yêu cầu, 'facility_create.html', ngữ cảnh)

bài đăng def(self, request, *args, **kwargs):
cơ sở_form = Cơ sởForm(request.POST, tiền tố=FACILITY_PREFIX)
cơ sở_detail_form = Cơ sởDetailForm(request.POST, tiền tố=FACILITY_DETAIL_PREFIX)

nếu cơ sở_form.is_valid():
cơ sở = cơ sở_form.save()

# không hợp lệ vì không có `cơ sở`
nếu cơ sở_detail_form.is_valid():
cơ sở_detail_form.cleaned_data['cơ sở'] = cơ sở

cơ sở_detail_form.save()

quay lại chuyển hướng (...)

bối cảnh = {
'Facility_form': cơ sở_form,
'cơ sở_detail_form': cơ sở_detail_form,
}

trả về kết xuất (phản hồi, 'facility_list.html', ngữ cảnh)

tôi nên làm thế nào Cơ sởCreateView.post Xử lý xác thực biểu mẫu và lưu vào ?

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

Một cách để giải quyết vấn đề này là:

cơ sở_detail_form.cleaned_data['cơ sở'] = cơ sở

可以替换为:

cơ sở_detail = cơ sở_detail_form.save(commit=False)
cơ sở_detail.facility = cơ sở
cơ sở_detail.save()

#phần còn lại của mã.. .

在这里cam kết=Sai tạo rađối tượng mà không lưu nó vào cơ sở dữ liệu, bạn có thể gán đối tượng khóa ngoại trước khi lưu.

Về python - một dạng html, một số dạng django có liên quan với nhau - làm cách nào để lưu? , 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/30329804/

33 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