基于ForeignKey对象从模型中获取对象

时间:2012-09-04 21:29:16

标签: django django-models django-views

我从模型中获取对象时遇到了一些问题。我有这样的事情:

 # Model
 class Subscription(models.Model):
    identifier = models.CharField(max_length=10)
    user = models.ForeignKey(User)

 class Subscriber(models.Model):
    name = models.CharField(max_length=5)

现在我有Subscriber对象实例my_user,我希望得到相关的订阅。所以我正在尝试这样的事情:

 sub = Subscription.objects.get(user=my_user)

但是之后我就变得异常了。我也试过了:

 sub = Subscription.objects.get(user.id=my_user.id)

结果仍然相同(例外)。

您是否有任何建议或链接到文档,我如何从Subscription集合中获取此对象?

1 个答案:

答案 0 :(得分:3)

至少根据你上面提供的模型,我不确定为什么会有关系。

订阅者无论如何都与Subscription无关,具体而言,模型的主要ID可能不应该相关(user.id = my_user.id),除非您明确地设计它。

此外,这:

sub = Subscription.objects.get(user=my_user)

只有在django知道某种关系时才会起作用。

在我看来,你应该这样做:

 class Subscription(models.Model):
    subscriber= models.ForeignKey('Subscriber')
    identifier = models.CharField(max_length=10)


 class Subscriber(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=5) #PS, if you ever save anything longer than 5 char's this will raise an exception.

这将允许您进行如下查询:

my_user = Subscriber.obejects.get(something=someotherthing)
sub = Subscription.objects.get(subscriber=my_user)