Fixed #7060 -- Added a note about race conditions to the tutorial
This commit is contained in:
parent
19e67c6cd1
commit
3e9b5bfd9c
|
@ -179,6 +179,19 @@ Now, go to ``/polls/1/`` in your browser and vote in the question. You should se
|
||||||
results page that gets updated each time you vote. If you submit the form
|
results page that gets updated each time you vote. If you submit the form
|
||||||
without having chosen a choice, you should see the error message.
|
without having chosen a choice, you should see the error message.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
The code for our ``vote()`` view does have a small problem. It first gets
|
||||||
|
the ``selected_choice`` object from the database, then computes the new
|
||||||
|
value of ``votes``, and then saves it back to the database. If two users of
|
||||||
|
your Web site try to vote at *exactly the same time*, this might go wrong:
|
||||||
|
The same value, let's say 42, will be retrieved for ``votes``. Then, for
|
||||||
|
both users the new value of 43 is computed and saved, but 44 would be the
|
||||||
|
expected value.
|
||||||
|
|
||||||
|
This is called a *race condition*. If you are interested, you can read
|
||||||
|
:ref:`avoiding-race-conditions-using-f` to learn how you can solve this
|
||||||
|
issue.
|
||||||
|
|
||||||
Use generic views: Less code is better
|
Use generic views: Less code is better
|
||||||
======================================
|
======================================
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue