2014-02-10 4 views
3

Я работаю над приложением, в котором у меня есть две модели для этого вопроса, назовем их A и B. Я хочу иметь еще одну модель, где я 'свяжу' и A, и B, чтобы сделать это легко для меня, чтобы найти экземпляр B, который относится к А. Так что я придумал:Django onetoonefield не сохраняет экземпляр

class ABLink(models.Model): 
    a = models.OneToOneField(A, null=True) 
    b = models.OneToOneField(B, null=True) 

Я использую сигнал post_save Джанго для модели А сделать по ссылке:

mashup, cr = ABLink.objects.get_or_create(a=instance) 
if cr: 
    mashup.b = B() 
else: 
    if mashup.b is None: 
     mashup.b = B() 
.... (assign values to mashup.b attributes) 
mashup.b.save() 
mashup.save() 

проблема mashup.b никогда не сохраняется в БД. При проверке в phpMyAdmin b устанавливается значение NULL. Любая идея, что я могу делать неправильно

ответ

4

Сначала создать B экземпляр, присвоить атрибуты к нему, называют сохранить на нем (теперь есть идентификатор), а затем присвоить его mashup.b:

if cr: 
    b = B() 
else: 
    if mashup.b is None: 
     b = B() 

#.... (assign values to b attributes) 

b.save() 
mashup.b = b 
mashup.save() 
Смежные вопросы