Кажется, у меня много проблем с использованием встроенных админских сообщений Django.Кажется, что Джанго хочет, чтобы отношения выражались только определенным образом, чтобы разрешить встраивание объектов.Например, у меня есть следующие модели:
class Person(models.Model):
first_name = models.CharField(...)
last_name = models.CharField(...)
email = models.OneToOneField("EmailAddress")
address = models.OneToOneField("Address")
class Warehouse(models.Model):
"""A warehouse _has_ an address."""
name = models.CharField(..., default="[Unnamed Warehouse]")
address = models.OneToOneField("Address")
class Donor(models.Model):
"""A donor _is_ a person."""
person = models.OneToOneField(Person)
class Recipient(models.Model):
"""A recipient _is_ a person."""
person = models.OneToOneField(Person)
class Sponsor(models.Model):
"""A sponsor _is_ a person."""
person = models.OneToOneField(Person)
class EmailAddress(models.Model):
name = models.CharField(..., default="Home")
email = models.EmailField()
is_default = models.BooleanField()
class Address(models.Model):
name = models.CharField(..., default="Home")
street_address = models.TextField()
Вот как я хотел бы представить Donor
в админке:
First Name: [person.first_name ]
Last Name: [person.last_name ]
Email: [person.email.email ]
Address: [person.address.street_address]
В связи с требованиями проекта, мне нужнооставьте эти поля в классе Person
.(т.е.: Person
может быть Donor
и a Sponsor
одновременно, и нет смысла дублировать эти данные в БД.)
Кажетсячто администраторский сайт Django действительно жесток относительно своих требований для работы со строками, и он отказывается разрешить мне редактировать Donor
, отредактировав его person
как встроенный.
Кажется, Django требует, чтобы я переместил всемоих отношений с противоположным концом вещей, так что Person
по существу будет иметь 3 бесполезных поля: donor
, recipient
и sponsor
, а Address
(!) должно иметь warehouse
иperson
заявлено непосредственно на них.Это действительно не имеет никакого смысла для меня.
Почему система администрирования Django так против использования встроенных функций на подобных моделях, и есть ли способ обойти это без необходимости писать представления и формы и безотменить все отношения, которые я написал?