Django - Projektowanie relacji modelowych - Interfejs administratora i Inline

Myślę, że moje zrozumienie FK i admin Django jest trochę wadliwe, więc cenię sobie wszelkie informacje na temat modelowania poniższego przypadku.

Po pierwsze, mamy ogólne obiekty adresowe. Następnie mamy użytkownika, który ma profil użytkownika. Dzięki temu Użytkownicy należą do działów, a także mają adresy.

Same departamenty mogą również mieć wiele adresów, a także kierownika działu. Więc może to być coś takiego (to jest coś, co właśnie włamuję się teraz):

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)

W każdym razie, po pierwsze, czy jest to właściwy sposób nawiązywania relacji?

Po drugie, chciałbym, aby pojawił się w administratorze, że możesz edytować dział, a na tej stronie miałaby wbudowaną listę wszystkich adresów, które również chcesz edytować. Próbowałem skonfigurować klasę AddressInline i dołączając ją jako inline do działu.

class AddressInline(admin.TabularInline):
    model = Address

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

Jednak gdy próbuję to wyświetlić, otrzymuję:

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

Pozdrawiam, Victor

questionAnswers(2)

yourAnswerToTheQuestion