Я думаю, что мое понимание FK и администратора Django немного ошибочно, поэтому я бы оценил любой ввод того, как моделировать приведенный ниже случай.Django - Проектирование отношений модели - интерфейс администратора и Inline
Во-первых, у нас есть общие объекты Address. Затем у нас есть User, у каждого из которых есть UserProfile. Благодаря этому пользователи принадлежат отделам, а также имеют адреса.
Сами департаменты также могут иметь несколько адресов, а также руководитель отдела. Так что это может быть что-то вроде (это что-то я просто хакерства до сих пор):
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)
Во всяком случае, во-первых, является то, что правильный способ создания отношений?
И, во-вторых, я хотел бы, чтобы он появился в администраторе, чтобы вы могли редактировать отдел, и на этой странице он имел бы встроенный список всех адресов для редактирования. Я попытался создать класс AddressInline и привязать его как встроенный к отделу.
class AddressInline(admin.TabularInline):
model = Address
class DepartmentAdmin(admin.ModelAdmin):
inlines = [AddressInline]
Однако, когда я пытаюсь показать, что я получаю:
Exception at /admin/people/department/1/
<class 'people.models.Address'> has no ForeignKey to <class 'people.models.Department'>
Приветствия, Victor
Вам нужно использовать 'ManyToManyField' для адреса в классах Департамента и UserProfile. – czarchaic
Celopes: Спасибо, что указали это, вернулись и приняли старые. Я не понимал, что должен был голосовать и принимать ... lol. – victorhooi