Cleanest way to get list of Django objects that have same foreign key and display them in a view
However, I am not sure if passing the interviews QuerySet like that is a good practice or not.


This is good practice, known as dependency injection. If someone asks for your business card, you wouldn't give them your wallet and let them fish it out - you can think of passing objects to the template renderer the same way. Passing only the company object would mean there would have to be more logic in your detail.html template to fish out the interviews, which is less than ideal. The way you currently do it serves as documentation as to what objects are required by the detail.html template.


  In general, is there a better way to get a list of objects that have the same foreign key?


You can specify a related_name for the company foreign key on your Interview model like so.

class Company(models.Model):
    name = models.CharField(max_length=200)

class Interview(models.Model):
    company = models.ForeignKey(Company, related_name='interviews', on_delete=models.CASCADE)
    position = models.CharField(max_length=200)


Then you can access all interviews for a company like company.interviews.all()