• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

变化与一对一不节能

django 来源:William 4次浏览

关系我有两个,我使用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) 

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


===========解决方案如下:

您应该保存座椅模型对象,它是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)