Home > front end >  How to update event time in Django model?
How to update event time in Django model?

Time:07-25

I have the following code. The expect outcome would be:

  1. If the event does not exist, then the admin form shows only created_at time, the updated_at field is empty.
  2. If the event exists: a. if there is no updated_at, the field would be filled with time now. b. if updated_at exists, the field time should be updated.

My code does not work, how should I change it? Thank you.

from django.db import models
from django.utils.timezone import now
import uuid


class Venue (models.Model):




class Types(models.TextChoices):
    LPN='LPN',
    RN ='RN'

type = models.CharField(
    max_length=3,
    choices=Types.choices,
    default=Types.RN
)
venue_id= models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
created_at = models.DateTimeField(default=now, editable=True,null=True, blank=True) 


if venue_id is True:

    updated_at = models.DateTimeField(default=now, editable=True,null=True,   blank=True)
    updated_at.update()

else:
    
    updated_at = models.DateTimeField(default=None, editable=True,null=True, blank=True)

place_text=models.CharField(max_length=200)


date = models.DateField ('Date')
start_time = models.DateTimeField ('start time')
finish_time= models.DateTimeField ('finish time')
details= models.CharField (max_length=500)

def _str_(self):
    return self.venue_text

please refer to the attached screenshot.

enter image description here

CodePudding user response:

Logic like this should be done via signal.

https://docs.djangoproject.com/en/4.0/ref/signals/#post-save

If you specify logic on model like this it does not register changes.

Redefine your models with all field you want it to have, if you want
update_at field to be null upon creation, until it actually gets
updated go with default=None, otherwise you can use auto_now.

If you want certain action to happen after you edit any field or so,
go with signals.

  • Related