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 に答える