#33512: DateTimeField auto_add_now is NUL when creating child model object
referencing parent model's object
-------------------------------------+-------------------------------------
               Reporter:  eeriks     |          Owner:  nobody
                   Type:  Bug        |         Status:  new
              Component:  Database   |        Version:  4.0
  layer (models, ORM)                |
               Severity:  Normal     |       Keywords:  auto_add_now
           Triage Stage:             |      Has patch:  0
  Unreviewed                         |
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  0
                  UI/UX:  0          |
-------------------------------------+-------------------------------------
 Description:
 When creating Model object which inherits from other Model which has
 `DateTimeField` with `auto_add_now=True` and passing `parent_ptr_id`
 value, then Django tries to update base Model by setting the auto_now_add
 field to NUL (although the field is null=False)

 Expected result:
 ChildModel instance created with a link to ParentModel.

 Code examples:
 `models.py`
 {{{
 class ParentModel(models.Model):
     created = models.DateTimeField(auto_now_add=True)
     modified = models.DateTimeField(auto_now=True)


 class ChildModel(SomeBaseModel):
     some_field = models.CharField(max_length=12)
 }}}

 `manage.py shell`
 {{{
 from app.models import ParentModel, ChildModel
 parent_object = ParentModel.objects.create()  # OK
 ChildModel.objects.create()  # OK
 ChildModel.objects.create(parentmodel_ptr=parent_object)  # IntegrityError
 }}}

 Actual result:
 Django tries to update ParentModel's `created` with NULL
 {{{
 UPDATE "app_parentmodel" SET "created" = NULL, "modified" = ? WHERE
 "app_parentmodel"."id" = ?
 }}}
 And raises
 {{{
 django.db.utils.IntegrityError: NOT NULL constraint failed:
 app_parentmodel.created
 }}}


 Noticed in Django 2.2, reproduced in 3.2 and 4.0. with both Postgres and
 SQlite database backends.
 [https://github.com/eeriks/django-demo Demo project on GitHub] to
 reproduce bug.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/33512>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/049.de2913627142a2a1e7d1c7899fdd6a65%40djangoproject.com.

Reply via email to