sql >> データベース >  >> RDS >> Mysql

Django ORM、MySQLに0としてNonedatetimeを挿入

    Seppoのソリューション(connection.ops.value_to_db_datetimeがないためdjango 1.9.4では機能しませんでした)に基づいて、次のようにカスタムDateTimeFieldを使用することになりました:

    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
    

    次に、モデルでDateTimeFieldの代わりにZeroDateTimeFieldを使用します。

    チャームのように機能し、顧客にmysqldbを修正するように指示する必要がありました;-)

    編集:自動生成されたモデルの使用を容易にするために、コンストラクターをオーバーライドしてnull=Trueおよびblank=Trueを設定することになりました。これは一部の人にとっては便利かもしれないので、ここにあります(これはオプションであり、疑わしいです):

    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. 2つのWebサイトで同じログイン

    2. MySQLシングルクエリは3つのテーブルを結合し、すべての結果を取得します

    3. データベースメールアカウント(SSMS)を作成する

    4. 大きなテーブルのSQLランダム行(where句付き)