[Answered ]-Django Admin how to change text in relations field

2πŸ‘

βœ…

By default it uses the __str__() method of the object. So the easiest way to change this is to set this method. For instance:

class Federation(models.Model):
    ...

    def __str__(self):
        return "{0} ({1})".format(self.translation, self.created_at)

Another way β€” if you don’t want to override the __str__ method β€” would be to override the label_from_instance of the form Field itself. But it’s more tricky.

def _federation_label_from_instance(self, obj):
    return "{0} ({1})".format(obj.translation, obj.created_at)

class AthleteAdmin(admin.ModelAdmin):
    ...

    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        formfield = super().form_field(db_field, request, **kwargs)
        if db_field.name == 'federation':
            formfield.label_from_instance = _federation_label_from_instance
        return formfield

Leave a comment