Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Django ORM, Chèn Không có datetime là 0 vào MySQL

dựa trên giải pháp của Seppo (không hoạt động cho django 1.9.4 vì thiếu connection.ops.value_to_db_datetime), tôi đã kết thúc bằng cách sử dụng DateTimeField tùy chỉnh như sau:

from django.db import models

class ZeroDateTimeField(models.DateTimeField):
    def get_db_prep_value(self, value, connection, prepared=False):
        value = super( ZeroDateTimeField, self ).get_db_prep_value( value, connection, prepared )
        if value is None:
            return  "0000-00-00 00:00:00"
        return value

Sau đó, chỉ cần sử dụng ZeroDateTimeField trong các mô hình của bạn thay vì DateTimeField.

hoạt động như một sự quyến rũ và tôi đã phải nói với khách hàng để sửa lỗi mysql db của họ;-)

CHỈNH SỬA:Tôi đã kết thúc việc ghi đè hàm tạo để đặt null =True và blank =True để dễ sử dụng các mô hình được tạo tự động. Vì điều này có thể hữu ích cho một số người, đây là nó (điều này là tùy chọn và có thể nghi ngờ):

def __init__(self, verbose_name=None, name=None, auto_now=False, auto_now_add=False, **kwargs):
    kwargs['null'] = True
    kwargs['blank'] = True
    super( ZeroDateTimeField, self ).__init__(verbose_name, name, auto_now, auto_now_add, **kwargs)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi đường ray khi cài đặt mysql2 (mysql2-0.3.20)

  2. MySQL hoán đổi giá trị khóa chính

  3. Thêm số 0 ở đầu vào một số giá trị trong cột trong MySQL

  4. # 1136 - Số cột không khớp với số giá trị?

  5. cách thoát dấu phân cách khỏi nội dung cột khi xuất csv