Why does this very basic query on this Django model fail?
<p>I have the following Django class:</p>

<pre><code>from caching.base import CachingManager, CachingMixin
from mptt.models import MPTTModel

def make_id():
    '''
    inspired by http://instagram-engineering.tumblr.com/post/10853187575/sharding-ids-at-instagram
    '''
    START_TIME = 1876545318034
    return (int(time.time()*1000) - START_TIME &lt;&lt; 23 ) | random.SystemRandom().getrandbits(23)

class My_Class(CachingMixin, MPTTModel):
    id = models.BigIntegerField(default=make_id, primary_key=True)
    # Other Attributes Snipped here for brevity
</code></pre>

<p>But look what happens when I try to query this class:</p>

<pre><code>&gt;&gt;&gt; My_Class.objects.get(pk=5000)
Traceback (most recent call last):
  File "&lt;console&gt;", line 1, in &lt;module&gt;
  File "my_virtual_env/lib/python2.7/site-packages/django/db/models/manager.py", line 127, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "my_virtual_env/lib/python2.7/site-packages/django/db/models/query.py", line 334, in get
    self.model._meta.object_name
DoesNotExist: My_Class matching query does not exist.
</code></pre>

<p>Why does it fail?? How can I fix this?</p>

<p>It could be you have no My_Class with id = 5000</p>

<pre><code>try:
    mc = My_Class.objects.get(pk=id)
except My_Class.DoesNotExist:
    mc = None
</code></pre>

python django django-queryset