Существует метод get_all_field_names()
, который встроен в подкласс Meta
для всех моделей и может быть найден в foo._meta.get_all_field_names()
:
>>> from foo.models import Foo
>>> f = Foo.objects.get(pk=1)
>>> f._meta.get_all_field_names()
['active', 'created', 'expires', 'id', , 'inputter', 'reason', 'requester', 'updated']
Так что это будет просто:
def print_all_fields_starting_with(obj, starter):
fields = [x for x in obj._meta.get_all_field_names() if x.startswith(starter)]
for field in fields:
print getattr(obj, field)
А у тебя на заказ save()
:
def save(self):
print_all_fields_starting_with(self, "foo_")
super(MyModel, self).save()