Django - Diseño de relaciones de modelo - Interfaz de administración y Inline

Creo que mi comprensión del FK y la administración de Django es un poco defectuosa, por lo que valoraría cualquier entrada sobre cómo modelar el caso siguiente.

En primer lugar, tenemos objetos de dirección genéricos. Luego, tenemos un usuario, cada uno de los cuales tiene un perfil de usuario. A través de esto, los usuarios pertenecen a departamentos, además de tener direcciones.

Los departamentos también pueden tener varias direcciones, así como un jefe de departamento. Entonces podría ser algo como (esto es algo que solo estoy hackeando ahora):

class Address(models.Model):
    street_address = models.CharField(max_length=20)
    etc...

class Department(models.Model):
    name = models.CharField(max_lenght=20)
    head_of_department = models.OneToOneField(User)
    address = models.ForeignKey(Address)

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    address = models.ForeignKey(Address)
    department = models.OneToOneField(Department)

De todos modos, en primer lugar, ¿es esa la forma correcta de establecer las relaciones?

Y en segundo lugar, me gustaría que aparezca en el administrador que puede editar un departamento, y en esa página, tendría una lista en línea de todas las direcciones para editar también. He intentado configurar una clase AddressInline y adjuntarla como una línea al Departamento.

class AddressInline(admin.TabularInline):
    model = Address

class DepartmentAdmin(admin.ModelAdmin):
    inlines = [AddressInline]

Sin embargo, cuando intento mostrar eso, obtengo:

Exception at /admin/people/department/1/
<class 'people.models.Address'> has no ForeignKey to <class 'people.models.Department'>

Saludos, Victor

Respuestas a la pregunta(2)

Su respuesta a la pregunta