0

最近、Django で奇妙な動作を見つけました。それから、自分の仕事の仕方が間違っていると思い始めます。

2つのモデルがあると仮定しましょう

class A(models.Model):
    attr1 = models.CharField()
...

class B(models.Model):
    a = models.ForeignKey("A",
        related_name = "bs"
        blank = True,
        null = True)

したがって、B のいくつかの項目があり、A との関連付けがない場合、たとえば b1、b2、b3 とします。A の新しいインスタンスを設定すると、たとえば a1 とします。

a.bs.all()
b1, b2 and b3 are returned.

どうしたの?新しいインスタンスを作成すると、関係が発生しないはずです。b1、b2、および b3 に関係がないことはわかっていますが、デフォルトでは新しいインスタンスに関連付けることはできません。

Django のやり方を知っている人はいますか?

a1.id: return [] else: a1.bs.all() の場合、私はトリックを実行できることを知っています

しかし、これは正しい方法ではないと思います。

誰でも私を助けることができますか?

前もって感謝します

4

1 に答える 1

1

これは Django のバグであり、現在「設計上の決定が必要」とマークされています。

https://code.djangoproject.com/ticket/14615

于 2012-10-25T15:02:05.243 に答える