我有两个模型,我使用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)
我得到“无”而不是用户的名字。有什么我想念的东西,比如我错过的保存或者我不理解的一些概念?谢谢。
你应该保存座位模型对象,即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)