私には本当に奇妙なDjango1.4の動作がありますが、これは私にはバグのように聞こえます。誰かがそれを経験した場合、私はどこを見ても、何も見つかりませんでした。
私の懸念は、ブールフィールドを含むモデルでModelFormを使用してDjangoフォームを作成することです。
Post
と2つTopic
のモデルは次のようになります:
class Topic(models.Model):
my_bool = models.BooleanField(default=False)
class Post(models.Model):
topic = models.ForeignKey(Topic, related_name='posts')
次に、TopicFormを使用して、他の場所で定義されたクラスを使用してフォームを生成しようとします。
post = Post.objects.get(pk=id_post)
f = TopicForm(instance=post.topic)
print f
正常に動作します。DBmy_bool
でFalseの場合、チェックボックスはオンになりません。Trueの場合my_bool
、チェックボックスがオンになります。結果は次のとおりです。
<p><label for="id_my_bool">my_bool:</label> <input type="checkbox" name="my_bool" id="id_my_bool" /></p>
問題 !
OK、ここに問題があります:オブジェクトget_object_or_404
を取得するために使用する場合、フィールドは常にチェックされます!これを見てください:Post
my_bool
post = get_object_or_404(Post.objects.select_related('topic'), pk=id_post)
f = TopicForm(instance=post.topic)
print f
出力(奇妙な):
<p><label for="id_my_bool">my_bool:</label> <input checked="checked" type="checkbox" name="my_bool" value="0" id="id_my_bool" /></p>
Post
注:オブジェクトを取得するために他のいくつかの方法を試しましたが、すべて正常に機能します:
post = Post.objects.filter(pk=id_post)[0]
post = get_object_or_404(Post, pk=id_post)
post = Post.objects.get(pk=id_post)
それをバグにする唯一のものは:
post = get_object_or_404(Post.objects.select_related('topic'), pk=id_post)
コメントコメント
- Django 1.3では、問題はありませんでした。Django1.4だけがバグになります。
- 次のように、関連していると思われるDjango1.4のバグをいくつか見つけました。
- MySQL GISバックエンドは使用していませんが、
django.db.backends.mysql
。
何かアイデアはありますか?
事前にどうもありがとうございました !