Ở Django, có nơi nào tôi có thể lấy danh sách hoặc tra cứu các mô hình mà ORM biết không?Django: Làm cách nào tôi có thể tìm thấy danh sách các mô hình mà ORM biết?
Trả lời
Nếu bạn sử dụng ứng dụng contenttypes, sau đó nó là đơn giản: http://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/
Nếu bạn muốn chơi, và không sử dụng good solution, bạn có thể chơi một chút với python mẫn:
import settings
from django.db import models
for app in settings.INSTALLED_APPS:
models_name = app + ".models"
try:
models_module = __import__(models_name, fromlist=["models"])
attributes = dir(models_module)
for attr in attributes:
try:
attrib = models_module.__getattribute__(attr)
if issubclass(attrib, models.Model) and attrib.__module__== models_name:
print "%s.%s" % (models_name, attr)
except TypeError, e:
pass
except ImportError, e:
pass
Note : đây là một đoạn mã khá thô lỗ; nó sẽ giả định rằng tất cả các mô hình được định nghĩa trong "models.py" và chúng kế thừa từ django.db.models.Model.
Giải pháp đơn giản:
import django.apps
django.apps.apps.get_models()
Trước Django 1,7, thay vì sử dụng:
from django.db import models
models.get_models(include_auto_created=True)
Tham số include_auto_created
đảm bảo rằng thông qua các bảng ngầm tạo ra bởi ManyToManyField
s sẽ được lấy ra là tốt.
Nếu bạn đăng ký mô hình của mình bằng ứng dụng quản trị, bạn có thể xem tất cả các thuộc tính của các lớp này trong tài liệu quản trị.
Danh sách mô hình sử dụng http://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/
from django.contrib.contenttypes.models import ContentType
for ct in ContentType.objects.all():
m = ct.model_class()
print "%s.%s\t%d" % (m.__module__, m.__name__, m._default_manager.count())
- 1. Django: Làm thế nào tôi có thể tìm thấy mô hình nào của tôi đề cập đến một mô hình
- 2. Làm thế nào tôi có thể tìm thấy sự kết hợp của hai truy vấn Django?
- 3. Làm thế nào tôi có thể tìm thấy giao điểm của hai truy vấn Django?
- 4. Django - làm thế nào tôi có thể tìm thấy khoảng cách giữa hai địa điểm?
- 5. Trong Mathematica, làm thế nào tôi có thể tìm thấy các mẫu bao gồm các quy tắc và danh sách?
- 6. Làm thế nào tôi có thể tìm thấy tất cả các kết hợp có thể có của một danh sách các danh sách (bằng Python)?
- 7. Làm thế nào tôi có thể viết danh sách của Erlang nối mà không sử dụng mô-đun danh sách?
- 8. Làm cách nào để tôi có thể lặp lại danh sách các danh sách trong Scala?
- 9. Tôi làm cách nào để tìm danh sách các gói có thể cài đặt của Homebrew?
- 10. Django có được danh sách các mô hình trong ứng dụng
- 11. nơi tôi có thể tìm thấy danh sách các quốc gia và tiểu bang cho mysql
- 12. TortoiseGit: Làm thế nào tôi có thể thấy danh sách các cam kết sắp được đẩy
- 13. Làm cách nào tôi có thể đặt nơi ứng dụng Qt tìm thấy mô-đun Qt?
- 14. Làm cách nào tôi có thể tìm thấy chỉ mục mục danh sách với giá trị mục?
- 15. Làm thế nào tôi có thể nhìn vào các thuộc tính và các trường mô hình trong Django?
- 16. lệnh django không thể tìm thấy mô-đun lệnh
- 17. Làm thế nào tôi có thể tìm thấy tất cả các đơn vị trong ứng dụng Delphi của tôi?
- 18. Làm cách nào tôi có thể lập trình được max_length của trường mô hình Django?
- 19. Django không thể tìm thấy mô-đun python MySQLdb
- 20. Node.js 0.8.15 npm Lỗi: Không thể tìm thấy mô-đun 'danh sách đầu tiên'
- 21. Gắn các mô hình vào danh sách
- 22. Danh sách các mô hình trong Model trong MVC
- 23. Làm cách nào để tìm tất cả các phần tử có thể có trong danh sách?
- 24. nơi tôi có thể tìm thấy một danh sách từ tốt
- 25. Trường biểu mẫu Django để có danh sách các chuỗi
- 26. Tôi có thể tìm danh sách các mục theo phong cách Android ở đâu?
- 27. Các phiên bản Mô hình Django có thể Hashable không?
- 28. Tôi có thể tìm danh sách timezоnes ở đâu?
- 29. Làm cách nào để biết phiên bản mô hình django đã được sửa đổi?
- 30. Django quản trị danh sách thay đổi lọc/liên kết đến các mô hình khác
Sử dụng phương pháp tương tự bạn cũng có thể nhận được tất cả các mô hình chỉ trong một ứng dụng: http://stackoverflow.com/a/8702854/117268 –
'từ django.apps. ứng dụng nhập get_models' tạo 'ImportError: Không có module nào có tên 'django.apps.apps'' ... bất kỳ ý tưởng nào? – allanberry
'từ django.apps nhập ứng dụng' >>' apps.get_models' – Dingo