Cách thanh lịch hiệu quả nhất để đặt lại tất cả các trường của một cá thể mô hình nhất định về giá trị mặc định là gì?Django - Cách đặt lại trường mô hình về giá trị mặc định của chúng?
Trả lời
Gán None
cho các trường và lưu.
Nó sẽ không chỉ hoạt động trong một tập hợp con các tình huống? Ví dụ, nó sẽ làm việc cho các lĩnh vực không được đánh dấu bằng trống = True và null = True? – Jonathan
Chèn cơ sở dữ liệu hoặc cập nhật của NULL được thay đổi thành giá trị mặc định của trường. –
@ Jonathan Tôi khá chắc chắn rằng bạn đã đúng. Tại sao Django thậm chí có trường 'null = True' nếu chúng chỉ trở thành giá trị mặc định? – Mark
Sau khi bạn đã thực hiện các thay đổi đối với trường hợp đó nhưng trước khi bạn đã "lưu" nó, tôi giả sử? Tôi nghĩ rằng bạn có thể sẽ cần phải lấy lại nó từ cơ sở dữ liệu ... Tôi không nghĩ rằng trường hợp mô hình Django giữ một "lịch sử" của những thay đổi đã được thực hiện cho một ví dụ.
Tôi đã từng làm theo cách này. Không có cách nào tốt hơn tôi có thể nghĩ đến.
from django.db.models.fields import NOT_PROVIDED
for f in instance._meta.fields:
if f.default <> NOT_PROVIDED:
setattr(instance, f.name, f.default)
# treatment of None values, in your words, to handle fields not marked with null=True
...
...
# treatment ends
instance.save()
Lưu ý: Trong trường hợp của tôi tất cả các trường, đã có giá trị mặc định.
Hy vọng nó sẽ hữu ích. Happy Coding.
def reset(self, fields=[], exclude=[]):
fields = fields or filter(lambda x: x.name in fields, self._meta.fields)
exclude.append('id')
for f in filter(lambda x: x.name not in exclude, fields):
if getattr(f, 'auto_now_add', False):
continue
if f.blank or f.has_default():
setattr(self, f.name, f.get_default())
Phương pháp này chủ yếu áp dụng để đặt lại một giá trị thành mặc định nhưng có thể điều chỉnh được. Nó đặt lại thuộc tính rego_update
cho tất cả các đối tượng Event
của tôi.
Event.objects.all().update(rego_update=Event().rego_update)
Ngoài ra, để áp dụng nó cá nhân (tức là để kích hoạt tùy chỉnh save
phương pháp):
default = Event().rego_update # Hack to fetch the default
for event in Event.objects.all():
event.rego_update = default
event.save()
Để thích ứng này để đặt lại tất cả các giá trị cho một trường hợp duy nhất, bạn có thể tự thiết lập lại các giá trị bằng một mặc định .
Ngoài ra, bạn có thể lặp qua các thuộc tính tương tự với các câu trả lời khác tại đây, nhưng điều này sẽ có vấn đề với các trường không có mặc định (hoặc không thể chỉnh sửa).
- 1. Làm cách nào để đặt giá trị trường mặc định thành giá trị của trường khác trong mô hình Django?
- 2. Giá trị mặc định cho trường trong Django mô hình
- 3. Django: giá trị mặc định của trường từ trường hợp của mô hình tự
- 4. Cách đặt giá trị mặc định của trường đặt hàng +1 của giá trị cao nhất trong Django
- 5. Làm cách nào để nhận giá trị mặc định cho trường trong mô hình Django?
- 6. Knockout.js đặt lại giá trị của một lựa chọn về giá trị mặc định của nó
- 7. Mặc định trường mô hình Django từ phương thức kiểu
- 8. Đặt lại giá trị mặc định của Sở thích
- 9. Django đặt giá trị biểu mẫu mặc định
- 10. cách đặt giá trị mặc định HTML.EditorFor()
- 11. di chuyển về phía nam django, không đặt mặc định
- 12. Cách đặt trường mô hình django theo tên?
- 13. Cách đặt giá trị mặc định trong bảng định dạng TabularInline trong quản trị Django
- 14. Tùy chỉnh quản trị Django TabularInline trường mặc định
- 15. django modeltranslation - trường mặc định?
- 16. Drupal CCK Date: cách đặt giá trị mặc định của trường datetime thành ngày sửa lỗi?
- 17. Đặt giá trị mặc định bằng sqlalchemy
- 18. Đặt hàng định nghĩa mô hình Django
- 19. django: Thay đổi giá trị mặc định cho lớp mô hình mở rộng
- 20. Giá trị mặc định ngẫu nhiên/không liên tục cho trường mô hình?
- 21. Trường Mô hình Django Blob
- 22. Thuộc tính Maven trong dự án nhiều mô-đun được đặt lại về mặc định
- 23. Đặt giá trị mặc định trong Mockito
- 24. Đặt giá trị của trường nhập
- 25. Cách đặt giá trị mặc định trong Hibernate
- 26. Đặt giá trị mặc định cho thuộc tính khóa ngoài
- 27. Các trường mô hình Django. Giá trị trường tùy chỉnh setter
- 28. Đặt hàng mặc định cho các mặt hàng m2m bởi trường mô hình trung gian ở Django
- 29. Phương thức dịch HTML5, cách đặt lại về mặc định?
- 30. hoàn nguyên hàng về giá trị cột mặc định mysql
Tôi nghĩ rằng tôi có thể hiểu sai câu hỏi của bạn - bạn muốn đặt từng trường thành giá trị "mặc định" được mã hóa cho từng đối tượng trường trên mô hình - hoặc đặt từng trường trở lại giá trị trước giá trị của trường trường đã được sửa đổi? –
@Matthew - trước đó. Nếu tôi muốn có sau này tôi sẽ bạn django-reversion. – Jonathan