2017-12-18 182 views
0

關係我有兩個,我使用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

回答

0

您應該保存座椅模型對象,它是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