Django auto assign a value to a model field on_save in admin I am a bit lost again. I am a beginner in this. 
I have two models:
class Person(models.Model):
    name = models.CharField(max_length=200, default="Name")
    phone = models.CharField(max_length=12, default="+22123456789")
    ...

class Adress(models.Model):
    person = models.ForeignKey(Person, on_delete=models.CASCADE)
    city = models.CharField(max_lenght=200, default="City")
    ...

In my admin.py I edit them inline so on one form I can have all the person data and few of his addresses. This is important. I do need to have a relation of a single person to 1-3 addresses.
from django.contrib import admin
from .models import Adress
from .models import Person

class AdressInline(admin.TabularInline):
    model = Adress

class PersonAdmin(admin.ModelAdmin):
    inlines = [
AdressInline    
    ]

admin.site.register(Person, PersonAdmin)

Now ... the problem is that there is no way to create a list_display with fields from both models. For my understanding list-display is flat, and there is no where to put 3 values of same field on it. I would like to have a list looking like this: 
list_display = ('name', 'phone', 'city')

So ... my idea is to create an extra field in model Person called 'maincity' that would not be editable by user, but would be filled automatically based on the value in Adress model. After we save the form. I have found something like this in Django Docs:  
def save_model(self, request, obj, form, change):
obj.user = request.user
super(ArticleAdmin, self).save_model(request, obj, form, change)

How to tell django to assign Adress.city to Person.maincity ?? *
*You might laugh, I am just learning. 

Saving the City values in both Person and Address models would lead to Data Duplication. While designing models or tables, we must avoid data duplication.
We can display the values of both Person and Address models in AddressAdmin list_display itself.
Define a method nick_name in AddressAdmin class with args as self and obj. Through obj args we can get the values of foreign key fields and paste the method name in list_display.
#models.py
class Person(models.Model):
    name = models.CharField(max_length=200)
    nick_name = models.CharField(max_length=200)

    def __str__(self):
return self.name


class Address(models.Model):
    name = models.ForeignKey(Person)
    city = models.CharField(max_length=200)

    def __str__(self):
return self.name

#admin.py

class AddressAdmin(admin.ModelAdmin):
    list_display = ('nick_name', 'city')

    def nick_name(self, obj):
return obj.name.nick_name