2

I am trying to see if I can pass field name as a variable in get_or_create (since I have a function where the key in the kwargs can vary)

Like so:

def convert_value(cell_value, field_to_lookup):
        rem_obj, created = Rem.objects.get_or_create(field_to_lookup=cell_value)
        print ('created? ',created)
        return rem_obj

The above wont work since it would look for 'field_to_lookup' as the key.

This post suggests using getattr but not sure if that'll be applicable in this case since I will again need to assign the output to a variable

Community
  • 1
  • 1
Anupam
  • 14,950
  • 19
  • 67
  • 94

1 Answers1

2

This post helped. Now passing the field-value pair as dict which allows passing variables for field names. Here's the code:

def convert_value(cell_value, field_to_lookup):
        rem_obj, created = Rem.objects.get_or_create(**{field_to_lookup:cell_value})
        print ('created? ',created)
        return rem_obj

Alternatively, I could directly just pass the dict to the function.

Community
  • 1
  • 1
Anupam
  • 14,950
  • 19
  • 67
  • 94