Tôi sử dụng miền nam để di chuyển các mô hình django của mình. Tuy nhiên có một lỗi khó chịu ở phía nam. Nó không đặt giá trị mặc định trong Postgres Databases. Ví dụ:di chuyển về phía nam django, không đặt mặc định
created_at = models.DateTimeField(default = datetime.now)
tag_id = models.PositiveIntegerField(default = 0)
Miền Nam sẽ thêm 2 trường này vào cơ sở dữ liệu, nhưng không đặt giá trị mặc định, cần thực hiện thủ công.
Có bản vá nào cho lỗi này không?
CẬP NHẬT Tôi đã thử đặt ngày mặc định bằng auto_now_add=True
nhưng điều đó cũng không đặt mặc định. Thêm null=True
vào trường thêm db.alter_column
trong tập lệnh di chuyển được tạo ra ở phía nam. Nhưng chỉ có loại bỏ ràng buộc NOT NULL
, không thêm mặc định. Tương tự cho trường số nguyên
Làm cách nào để thực thi mặc định trong cơ sở dữ liệu Postgres. Tôi có apis đàm phán trực tiếp với cơ sở dữ liệu được tạo ra bởi django. Họ hy vọng mặc định sẽ được đặt ra. – jerrymouse
Bạn sẽ phải sử dụng SQL tùy chỉnh để tự sửa đổi lược đồ. Bạn có thể làm điều này trong miền Nam bằng cách chuyển SQL sang ['db.execute'] (http://south.aeracode.org/docs/databaseapi.html#db-execute). –
Daniel chỉ vì Django cố gắng để ngăn chặn người dùng thay đổi mặc định trường ở cấp độ lược đồ, điều đó không có nghĩa là họ KHÔNG THỂ có thể. Tôi đã đăng một giải pháp thực tế dưới đây. – galarant