savemightlife
savemightlife

Reputation: 129

django how to get model field as object

Is it possible to get model's field as object For example: I have this model

class User(models.Model):
    name = models.CharField(max_length=255) 
    email = models.TextField(blank=True)
    phone = models.TextField(blank=True)

now I want to use the field as object I want to be able to do this

def update_a_field(field):
    model_field = field
    query_set = User.objects.values(field.__name__).filter(field__isnull=False)

then I can call my function like this

name = User._meta.get_field("name")
update_a_field(name)
email = User._meta.get_field("email") 
update_a_field(email)

Upvotes: 0

Views: 75

Answers (1)

Enthusiast Martin
Enthusiast Martin

Reputation: 3091

This should work:

def update_a_field(field):
    model_field = field

    filter_data = { "{}__isnull".format(field.__name__) : False}

    query_set = User.objects.values(field.__name__).filter(**filter_data)

Upvotes: 2

Related Questions