2011-11-02 32 views
5

Tại thời điểm nào ContentTypes mới được tạo và cách tôi có thể kích hoạt bản thân này?Django: làm thế nào để kích hoạt việc tạo ra ContentTypes cho các mô hình mới?

Tôi có một loạt các di chuyển về phía nam, tạo ra các mô hình mới và như vậy. Sau khi tất cả được thực hiện có một di chuyển dữ liệu cuối cùng mà gán quyền cho các đối tượng mới này cho bất kỳ nhóm nào đã có quyền liên quan. (Bằng cách này 'Các quyền liên quan' được tôi chọn để có ý nghĩa trong ứng dụng)

Tuy nhiên, các ContentTypes cho các mô hình mới được tạo ra chưa có sẵn khi tôi chạy dữ liệu đó. Họ là khi tôi chạy tất cả các di chuyển khác đầu tiên, và chỉ sau đó chạy thêm datamigration. I E. chạy lệnh hai lần. Nhưng làm cho bản vá thủ công đó không phải là kịch bản khả thi trong trường hợp của tôi.

Vì vậy, tôi muốn kích hoạt thủ công việc tạo ContentTypes cho bất kỳ mô hình mới nào ngay trước khi tôi chạy dữ liệu của mình. Làm thế nào được thực hiện?

+0

Bạn nhận được ContentTypes như thế nào? [get_for_model] (https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#django.contrib.contenttypes.models.ContentTypeManager.get_for_model) bình thường sẽ hoạt động. – Tobu

+0

cho ct trong orm ['contenttypes.contenttype']. Objects.filter (app_label = 'client') Nhưng tôi đoán tôi có thể chỉ đơn giản là rõ ràng về nó; gợi ý tốt –

Trả lời

7

Bạn nên sử dụng ContentType.objects.get_for_model(), tạo ra các trường hợp ContentType theo yêu cầu (nó cũng thêm một số bộ nhớ đệm).

+0

Điều này có nhược điểm là không thể viết được trường hợp chung ("tất cả các kiểu nội dung cho ứng dụng") nhưng nó giúp tôi khắc phục vấn đề này. Cảm ơn –

Các vấn đề liên quan