time_limit = timezone.now() – timedelta(hours=30) time_limit_str =
time_limit.strftime(‘%Y-%m-%d %H:%M:%S’)in_review_records = RequestedData.objects.filter(
Q(status=’In Review’) &
(
Q(additional_details__isnull=True) |
Q(additional_details__processing_details__isnull=True) |
(
Q(additional_details__processing_details__has_key=account_name) &
Q(additional_details__processing_details__account_name__lte=time_limit_str)
) |
(
Q(additional_details__processing_details__isnull=False) &
~Q(additional_details__processing_details__has_key=account_name)
)
) ).annotate(processing_details=KeyTransform(‘processing_details’, ‘additional_details’)).annotate(account_name=KeyTransform(account_name,
‘processing_details’))
##################
account = “abc”
here i am trying to get all the records
if the additional_details is empty
if processing_details in additional_details is empty
if processing_details has key account
then check the value (which is processing time ) is not in past 30 hours
and if processing_details has keys but it is not “abc” we are free to include it
i tried so many things but nothing seems to work
lastly the format of additional_details which is a json model field is like JSONField(default=dict, null=True, blank=True)
“additional_details” : {“processing_details”: {“sas”: “2024-07-19 11:03:20”, “aditi account”: “2024-07-20 11:03:20”, “irs-account-2”: “2024-07-23 11:03:20”}}