2

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

 # 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)

现在我有订阅者对象实例 my_user,我想获得相关订阅。所以我正在尝试类似的东西:

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

但在那之后我得到了例外。我也试过:

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

结果仍然是相同的(异常)。

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

4

1 回答 1

3

至少根据您上面提供的模型,我不确定为什么应该存在关系。

订阅者无论如何都与订阅无关,特别是模型的主 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)
于 2012-09-04T22:35:40.480 回答