变化与一对一不节能

变化与一对一不节能

问题描述:

关系我有两个,我使用Django的OneToOneField与模型建模,本文档以下内容:https://docs.djangoproject.com/en/2.0/topics/db/examples/one_to_one/变化与一对一不节能

class Seats(models.Model): 
    north = models.OneToOneField('User',on_delete=models.CASCADE,related_name='north', default=None, null=True) 
    bridgetable = models.OneToOneField('BridgeTable',on_delete=models.CASCADE, default=None, null=True) 

class BridgeTableManager(models.Manager): 

    def create_deal(self): 
     deal = construct_deal() 
     table = self.create(deal=deal) 
     s = Seats(bridgetable=table) 
     s.save() 
     return table 

class BridgeTable(models.Model): 
    deal = DealField(default=None,null=True) 

当我运行这段代码我能顺利拿到关系工作

table = BridgeTable.objects.get(pk='1') 
user = User.objects.get(username=username) 
table.seats.north = user 
table.seats.north.save() 
print(table.seats.north) 

打印语句打印出坐在北方的玩家的名字。但是,如果我尝试像这样再次访问表格:

table = BridgeTable.objects.get(pk='1') 
print(table.seats.north) 

我得到“无”而不是用户名。有什么我错过了,就像我错过的保存或一些我不理解的概念?谢谢。

+0

您应该保存座椅模型对象是(DO:'table.seats.save()') – Amar

您应该保存座椅模型对象,它是table.seats.save()

尝试print table.seats.north

虽然table.seats.north.save()运行节省User对象

这里是正确的步骤:

table = BridgeTable.objects.get(pk='1') 
user = User.objects.get(username=username) 
table.seats.north = user 
table.seats.save() 
print(table.seats.north) 
+0

这工作, 谢谢! – William