15

Tôi đã thực hiện một sự thay đổi mô hình từChuyển ManyToManyField null đúng, trống thật, không được công nhận

standard = models.ManyToManyField(Standard) 

để

standard = models.ManyToManyField(Standard, blank=True, null=True) 

Nam schemamigration cho ứng dụng này không nhận ra sự thay đổi?

Tương tự như câu hỏi này, đó là chưa được trả lời: South migrations and changes to many-to-may fields

+0

Nam chính xác nói gì khi bạn cố gắng chạy './manage.py schemamigration yourapp --auto'? –

+0

Không có thay đổi nào được tìm thấy – npradeetw

+0

Điều duy nhất tôi có thể nghĩ là bạn không lưu 'models.py', nhưng tôi rất nghi ngờ điều đó. Xin lỗi tôi không thể giúp. –

Trả lời

28

hành vi đó là đúng: null không có nghĩa là bất cứ điều gì ở cấp cơ sở dữ liệu khi sử dụng với một ManyToManyField. Việc triệu gọi một ManyToManyField làm cho việc tạo ra một bảng trung gian để giữ mối quan hệ, và mặc dù Django sẽ tạo một thuộc tính standard trên cá thể mô hình của bạn để thuận tiện cho bạn, không có cột nào đại diện cho nó. Theo định nghĩa, luôn luôn có thể có trường hợp bằng không của mối quan hệ.

blank=False, tuy nhiên, không ảnh hưởng đến ứng dụng quản trị, buộc người dùng phải chọn ít nhất một mối quan hệ.

(Lưu ý rằng hệ thống di chuyển tích hợp của Django tạo di chuyển cho bất kỳ thay đổi nào đối với mô hình, bất kể nó có ảnh hưởng đến cơ sở dữ liệu hay không. cơ sở dữ liệu hoặc có hay không bạn có thể không có trường hợp nào của mối quan hệ.)

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