Как проверить, содержит ли экземпляр модели Django внешний ключ или нет
Мне нужно сериализовать данные, поступающие из журнала аудита Django, таким образом, чтобы при изменении поля присутствовало поле, имеющее значение внешнего ключа. Мне нужно получить значение этого внешнего ключа из базы данных и изменить внешний ключ на это значение.
def get_changes(self, obj): changes_data = obj.changes if changes_data: имя_модели = obj.content_type.model_class().name try: field_mapping = getattr(ma_activity_tracker, f"{model_name}_display_atrb") except AttributeError: field_mapping = {}
changes = {}
for field, (old_value, new_value) in changes_data.items():
field_name = field_mapping.get(field, field)
field_object = globals().get(model_name)
print(field_object.User)
# if isinstance(field_object, models.ForeignKey):
if isinstance(field_object,models.ForeignKey):
old_related_obj = field_object.related_model.objects.filter(pk=int(old_value)).first()
new_related_obj = field_object.related_model.objects.filter(pk=int(new_value)).first()
old_display_value = getattr(old_related_obj, field_name) if old_related_obj else None
new_display_value = getattr(new_related_obj, field_name) if new_related_obj else None
old_value = old_display_value
new_value = new_display_value
changes[field_name] = {
"Old Value": old_value,
"New Value": new_value
}
return changes
return None
Это то, что я пытался сделать, но блок if никогда не выполняется