Может ли модель Django встраивать классы? - PullRequest
3 голосов
/ 19 апреля 2010

Я хочу иметь модель Django, подобную этой:

class Model(models.Model):
 string = models.CharField()
 class ContactDetails:
  phone = models.IntegerField()

Возможно ли это? Я пробовал гуглить, но, похоже, не отвечает на мой вопрос

Это будет означать, что я получу при доступе:

Model().ContactDetails.phone

работает так:)

Джо

1 Ответ

1 голос
/ 19 апреля 2010

Может иметь встроенные классы (общий случай class Meta), но любые члены models.*Field игнорируются. Это не имеет смысла в SQL.

То, что вы хотите, это много-к-одному:

class Thing(models.Model): # Don't name this class 'Model'!
    name = models.CharField(max_length=100)

class ContactDetails:
    parent = models.ForeignKey(Thing, related_name="contactDetails")
    phone = models.IntegerField()

Затем для доступа:

thing = Thing();
# ... set up thing ...
thing.save()
contact1 = ContactDetails(parent=thing)
# ... set up contact1 ...
contact1.save()
contact2 = ContactDetails(parent=thing)
# ... set up contact2 ...
contact2.save()
# ...
thing.contactDetails.all()
# returns a list with contact1 and contact2

или что угодно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...