Tôi có một vài hành động để thực hiện khi lưu một mô hình, đặc biệt là từ quản trị viên. Tôi viết hoa một vài trường và kiểm tra để đảm bảo rằng một trường hoặc trường khác được điền. Tôi cũng tạo ra các slug trường. Bây giờ, những điều này được phân chia giữa việc ghi đè các hàm sạch và chức năng lưu. Nó hoạt động ngay bây giờ, nhưng tôi tò mò khi nào nên sử dụng. Tôi nhìn qua các tài liệu, và tôi không thể tìm thấy cụ thể để sử dụng khi nào.Django Overriding Model Clean() vs Save()
24
A
Trả lời
30
Bạn nên sử dụng sạch để thực hiện công việc liên quan đến xác thực và phân tích cú pháp/thay đổi/nếu không xóa đầu vào. Việc tận dụng các trường và tạo một con sên có thể xảy ra ở đây. Tôi cũng sử dụng sạch để buộc trường như post_type
thành giá trị cụ thể trong các mô hình proxy. Nếu bạn nâng cao django.core.exceptions.ValidationError('error text')
trong sạch, thì 'error text'
sẽ được thêm vào form.non_field_errors
.
Lưu là nơi thay đổi cách mô hình thực sự được lưu. Ví dụ, tôi đã sử dụng lưu để tạo ra một cây trồng của một hình ảnh được tải lên. ValidationError
s không bị bắt nếu được nêu ở đây, và tôi cảm thấy như đó là sự khác biệt thực tế quan trọng nhất giữa hai người.
Các vấn đề liên quan
- 1. get_queryset Overriding() trong một Django DetailView
- 2. Django - tín hiệu post_init được gọi trên Model instance save & trước khi dụ được tạo ra. Tại sao?
- 3. Django model Tag thiết kế
- 4. Prepopulate Django (không Model) Form
- 5. Mocking Django Model và tiết kiệm()
- 6. Agile Vs Spiral Model cho SDLC
- 7. .NET Threading Model và Application.DoEvents vs. Thread.Sleep
- 8. Django - Các mô hình save() có lười biếng không?
- 9. Django-nonrel vs Django-mongodb vs Mongokit vs pymongo native
- 10. Java: Overriding hoặc Overloading method?
- 11. Overriding (cast)
- 12. Overriding Backbone.Collection.prototype.add
- 13. Overriding Constructors
- 14. Hoàn tác Git Clean
- 15. Android Studio Build/Clean
- 16. Xác thực end_date lớn hơn start_date ở dạng Django Model
- 17. Django Model Auto Increment Primary Key Dựa trên khóa ngoài
- 18. Khi sử dụng Custom tài Model trong Django 1,5
- 19. Sự phù hợp của một Textbox Django trong một Model
- 20. Django: Sự khác biệt giữa save() và create() từ góc độ giao dịch
- 21. django-signal vs triggers?
- 22. django-shop vs Satchless?
- 23. CherryPy vs Django
- 24. Django CharField vs TextField
- 25. django AuditTrail vs Reversion
- 26. ckeditor inline save/submit
- 27. fortran SAVE statement
- 28. Final clean up in specs2
- 29. python Overriding threading.Thread.run()
- 30. Overriding Binding in Guice
Ah đã đánh cắp các từ ngay trên bàn phím của tôi. Câu trả lời hay. Điều duy nhất tôi sẽ thêm vào là một liên kết đến các tài liệu, nơi có một ví dụ hay về 'ValidationError' đang được ném: https://docs.djangoproject.com/en/dev/ref/models/instances/#django .db.models.Model.clean –
Không phải django.forms.ValidationError, nhưng django.core.exceptions.ValidationError – benjaoming
Bắt tốt. Tôi đoán tôi đã luôn luôn nhập khẩu nó từ các hình thức (mà nhập nó từ core.exceptions). Cập nhật câu trả lời. – dokkaebi