Oprócz jednego przykładu w dokumentach, nie mogę znaleźć żadnej dokumentacji na temat tego, jak dokładnie django wybiera nazwę, z której można uzyskać dostęp do obiektu potomnego z obiektu nadrzędnego. W ich przykład, wykonaj następujące czynności:W jaki sposób django relacje jeden-do-jednego mapuje nazwę do obiektu podrzędnego?
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
więc w ich przykład, po prostu zadzwoń p1.restaurant bez wyraźnego zdefiniowania tej nazwy. Django zakłada, że nazwa zaczyna się od małej litery. Co się stanie, jeśli nazwa obiektu zawiera więcej niż jedno słowo, np. FancyRestaurant?
Uwaga boczna: Próbuję w ten sposób przedłużyć obiekt użytkownika. Czy to może być problem?