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

djangoを使用した条件付きupdate_or_create

    次の例は正しく機能する可能性があります

    最初のオプション

    try:
        obj = Room.objects.get(
            id=id, # test with other fields if you want
        )
        if obj.modified_at < DATETIME:
            obj.capacity = 10
            obj.save()
        else:
            obj = Room.objects.create(
                # fields attributes
            )
    except Room.DoesNotExist:
        obj = Room.objects.create(
            # fields attributes
        )
    

    2番目のオプション

    または、条件式 を使用してこれを行うことができます。 djangoの

    from django.db.models import F, Case, When
    import datetime
    
    your_date = datetime.datetime.now()
    condition = Case(When(modified_at__lt=your_date,then=10),default=F('capacity'))
    
    • modified_atかどうかを確認します your_date未満です
    • この条件の値は10です
    • それ以外の場合は、F('capacity')を使用してフィールドの同じ値を保持します

    残りのコード

    Room.objects.update_or_create(name='new_name',
               defaults={'name':'new_name','capacity':conditition})
    



    1. 検索フォームでDBクエリを渡さないRails

    2. $mysqli->insert_idと同等のpostgresql

    3. Oracleでカレンダーテーブルを作成する方法

    4. データのリストを使用してFIND_IN_SETを使用する方法