Django外键和一对一访问最佳实践

时间:2019-03-18 22:26:34

标签: django django-models

说我有以下模型:

class User(models.Model):
   name = models.CharField(max_length=255)
   ...

class Knapsack(models.Model):
   user = models.OneToOneField(
       User,
       on_delete=models.CASCADE,
       null=False
   )
   ...

现在说我想为对象为my_user的给定用户访问背包。我有几种选择:

knapsacks = Knapsack.objects.filter(user=my_user).values()
knapsacks = my_user.knapsack.values()

可能会问相同的问题,只是要一对一关系而不是外键。

哪种方法更好?

1 个答案:

答案 0 :(得分:0)

OneToOne字段和ForeignKey字段的行为相同,您可以使用user.user对其进行调用。第一个用户是您的Knapsack模型的实例,第二个用户是与其相关的User

相关问题