Django onetoonefield没有保存实例

时间:2014-02-10 11:05:46

标签: python django django-models

我正在开发一个应用程序,我有两个模型用于这个问题的目的让我们称他们为A和B.我想要另一个模型我将'A和B'连接起来只是为了让我很容易找到与A有关的B实例。所以我想出了:

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

我使用Django的post_save信号为模型A做链接:

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。知道我可能做错了什么

1 个答案:

答案 0 :(得分:4)

首先创建B实例,为其指定属性,在其上调用save(现在它具有id),然后将其分配给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()