I have those models:

```
class Interval(models.Model):
    from_time = models.TimeField(auto_now_add=False)
    to_time = models.TimeField(auto_now_add=False)

class CheckIn(models.Model):
    date_time = models.DateTimeField(auto_now_add=True)
    interval = models.ForeignKey(Interval, on_delete=models.SET_NULL)

```

**The main goal is:**

When a `CheckIn` is created the code should check if it's within the given interval's time. I need to compare those two and return their difference in `%H:%M:%S` format.

**What I've done so far:**

Since i have different scenarios what to do with the given `CheckIn` before it gets saved, I am using a `pre_save` signal and the time comparison is a part of these scenarios. Here is a pseudo:

```
@receiver(pre_save, sender=CheckIn)
def set_action_state(sender, instance, **kwargs):
    if something:
       ...
       if another:
          ...
       else:
          ...
    else:
        # instance.date_time.time() is 13:56:56.568860 (2 hours behind, it should be 15 instead of 13)
        # instance.interval.from_time is 15:07:40
        if instance.date_time.time() < instance.interval.from_time:
            # this returns True when it's meant to return False

```

`instance.date_time` is a timezone aware date, since i can print it's `tzinfo` which returns `UTC` instead of `Europe/Sofia` as of my `TIME_ZONE` in settings and I have no clue why.

So I manually tried to set it's `tz` by doing:

```
tz = pytz.timezone('Europe/Sofia')
dt1 = instance.date_time.replace(tzinfo=tz)
print(dt1.tzinfo) # which is the correct Europe/Sofia
print(dt1) # which is 13:56:56.568860, again 2 hours behind even with different timezone.

```

The second thing i tried is to convert `instance.interval.from_time` to aware datetime and then compare both dates' `time()`.

```
def time_to_datetime(date, time):
    return make_aware(datetime.datetime.combine(date, time))

dt2 = time_to_datetime(dt1.date(), instance.interval.from_time)
print(dt2.tzinfo) #this returns 'Europe/Sofia'
print(dt2) #this is 15:07:40

```

Now both `dt1` and `dt2` are aware but still no luck comparing them. Here's the complete code:

```
tz = pytz.timezone('Europe/Sofia')
dt1 = instance.date_time.replace(tzinfo=tz)
dt2 = time_to_datetime(dt1.date(), instance.interval.from_time)
print(dt1.time() < dt2.time()) # this is True
print(dt1.tzinfo) # 'Europe/Sofia'
print(dt2.tzinfo) # 'Europe/Sofia'
print(dt1.time()) # 13:56:56.568860
print(dt1.time()) # 15:07:40

```

**How can I get the proper time in `dt1` and this comparison to work properly, even when both datetimes are aware with a proper timezone?** 

**EDIT:** I have `USE_TZ = True` in my settings.