2009-10-12 3 views
1

Я полностью озадачен, почему это не работает:объекты Сохранение ForeignKey в Django

flight = Flight.objects.get(pk=flight_id) 
print "old", flight.route.pk ## `route` is a ForeignKey field to model Route 
print "new", new_route.pk 
flight.route=new_route # new_route is a newly created Route object 
flight.save() 
print "db", Flight.objects.get(pk=flight_id).route.pk 

это выход:

old 4800 
new 7617 
db 4800 

Есть ли какой-то особый способ мне нужно позвонить save() в полете, чтобы получить его на самом деле?

редактировать: мои модели выглядеть следующим образом:

class Flight(models.Model): 
    route = models.ForeignKey(Route, blank=True, null=True, related_name="flight") 

class Route(models.model): 
    # a bunch of CharFields and IntegerFields 
+0

Могли бы вы пожалуйста, укажите связанные модели django? – madewulf

ответ

0

КИ Я просто понял это, я недавно переехал мой обычай функции сохранения от нижней части определения класса к вершине, и я забыл последнюю строку, которая вызывает super(Flight, self).save(*args, **kwargs)

1

Имеет new_route был спасен? Предполагая, что pk не вернет результат, но не сможет проверить.

В противном случае см http://code.djangoproject.com/ticket/8892

+0

pk вернет None, если экземпляр модели не был сохранен. –