模型的更改与一对一关系不保存

问题描述 投票:0回答:1

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

print语句打印出位于北方的玩家的名字。但是,如果我尝试再次访问该表,如下所示:

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

我得到“无”而不是用户的名字。有什么我想念的东西,比如我错过的保存或者我不理解的一些概念?谢谢。

django django-models
1个回答
1
投票

你应该保存座位模型对象,即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)
© www.soinside.com 2019 - 2024. All rights reserved.