我从模型中获取对象时遇到了一些问题。我有这样的事情:
# 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集合中获取此对象?
答案 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)