Để đặt các mô hình của tôi vào các thư mục con, tôi đã cố gắng sử dụng trường Meta app_label như được mô tả here.Mô hình trong thư mục con thông qua app_label?
cấu trúc thư mục của tôi trông như thế này:
- dự án
- ứng dụng
- foo
- mô hình
- __init_ _.py
- bar_model.py
- mô hình
- foo
- ứng dụng
Trong bar_model.py tôi xác định mô hình của tôi như thế này:
from django.db import models
class SomeModel(models.Model):
field = models.TextField()
class Meta:
app_label = "foo"
tôi thành công có thể nhập kiểu như sau:
from apps.foo.models.bar_model import SomeModel
Tuy nhiên, chạy:
./manage.py syncdb
không tạo ra các bảng cho mô hình. Tuy nhiên, trong chế độ tiết, tôi thấy rằng ứng dụng "foo" được nhận dạng đúng (trong INSTALLED_APPS trong settings.py). Di chuyển mô hình đến models.py dưới foo không hoạt động.
Có một số quy ước cụ thể không được ghi lại bằng app_label hoặc với toàn bộ cơ chế ngăn cấu trúc mô hình này không được syncdb nhận dạng không?
Chính xác! Bây giờ nó hoạt động. – nikola
Cảm ơn! Vâng, bạn sẽ cần phải nhập chúng vào '__init __. Py' và cung cấp cho chúng một' app_label' thông qua lớp 'Meta' của mô hình. –
Quan trọng bổ sung từ @ mustafa.0x bạn * phải * cung cấp cùng một app_label hơn tên nhãn bạn cung cấp làm tên mô-đun hoặc tên bạn cung cấp trong đăng ký AppConfig nếu không nó sẽ trả về một OrderedDict trống() nếu bạn nhận apps.get_app_config (mô hình 'app_label') sau khi nhập django.apps.apps – danigosa