Nói rằng tôi có một hình thức trông như thế này:Thêm dữ liệu vào đối tượng ModelForm trước khi lưu
forms.py
class CreateASomethingForm(ModelForm):
class Meta:
model = Something
fields = ['field2', 'field3', 'field4']
Tôi muốn các biểu mẫu để có ba lĩnh vực. Tuy nhiên lớp học Something
của tôi cũng có field1
. Câu hỏi của tôi là - làm cách nào để thêm dữ liệu vào field1
, nếu tôi không sử dụng số ModelForm
để thu thập dữ liệu. Tôi đã cố gắng làm một cái gì đó như thế này, nhưng nó không phải đang làm việc và tôi không chắc trên con đường đúng đắn để giải quyết này:
views.py
def create_something_view(request):
if (request.method == 'POST'):
# Create an object of the form based on POST data
obj = CreateASomething(request.POST)
# ** Add data into the blank field1 ** (Throwing an error)
obj['field1'] = request.user
# ... validate, save, then redirect
Các lỗi tôi nhận được là:
TypeError: 'CreateAClassForm' object does not support item assignment
Trong Django, cách thích hợp để gán dữ liệu cho đối tượng ModelForm
trước khi lưu là gì?
Cảm ơn bạn - một sai lầm ngớ ngẩn trên kết thúc của tôi bằng cách sử dụng một cuộc gọi truy cập danh sách để có được một thuộc tính của đối tượng. – Joker
Đối với các chế độ xem dựa trên lớp, bạn cũng có thể [ghi đè phương thức form_valid] (https://docs.djangoproject.com/en/1.5/topics/class-based-views/generic-editing/#basic-forms) để thêm loại thông tin, sau đó gọi 'super (MyView, self) .form_valid (form)' để đạt được hiệu quả tương tự. –
Có cách nào để ghi đè lên phương thức lưu của biểu mẫu để đạt được điều tương tự không? – jvannistelrooy