Как django взаимно-однозначные отношения сопоставляют имя дочернему объекту?

За исключением одного примера в документации, я не могу найти никакой документации о том, как именно django выбирает имя, с которым можно получить доступ к дочернему объекту из родительского объекта. В своем примере они делают следующее:

    class Place(models.Model):
        name = models.CharField(max_length=50)
        address = models.CharField(max_length=80)

        def __unicode__(self):
            return u"%s the place" % self.name

    class Restaurant(models.Model):
        place = models.OneToOneField(Place, primary_key=True)
        serves_hot_dogs = models.BooleanField()
        serves_pizza = models.BooleanField()

        def __unicode__(self):
            return u"%s the restaurant" % self.place.name

    # Create a couple of Places.
    >>> p1 = Place(name='Demon Dogs', address='944 W. Fullerton')
    >>> p1.save()
    >>> p2 = Place(name='Ace Hardware', address='1013 N. Ashland')
    >>> p2.save()

    # Create a Restaurant. Pass the ID of the "parent" object as this object's ID.
    >>> r = Restaurant(place=p1, serves_hot_dogs=True, serves_pizza=False)
    >>> r.save()

    # A Restaurant can access its place.
    >>> r.place
    <Place: Demon Dogs the place>
    # A Place can access its restaurant, if available.
    >>> p1.restaurant

В своем примере они просто вызывают p1.restaurant без явного определения этого имени. Django предполагает, что имя начинается с нижнего регистра. Что произойдет, если в названии объекта больше одного слова, как FancyRestaurant?

Замечание: я пытаюсь расширить объект User таким образом. Может быть, в этом проблема?

5
задан Herman Schaaf 13 September 2010 в 23:25
поделиться