On Mon, 2009-02-02 at 22:22 -0800, Theme Park Photo, LLC wrote:
> I can't get anything with Foreign keys to work. I trimmed everything
> down to the simplest example:
> 
> from django.db import models
> from django.contrib.auth.models import User
> 
> class Ranking(models.Model):
>       user = models.ForeignKey(User)
>       score = models.IntegerField()
>       def __unicode__(self):
>               return u'%s %d' % (self.user, self.score)
> 
> I can't add any "Ranking" records. I try like this (from the django
> shell) and always get an error like this:
> IntegrityError: (1048, "Column 'user_id' cannot be null")
> 
> Can someone give me a hint as to the right way to do this?
> 
> (Django shell session below)
> 
> >>> from django.db import models
> >>> from django.contrib.auth.models import User
> >>> from djbaytzim.bayscore.models import Ranking
> >>> u = User (username="swirsky")
> >>> print type(u)
> <class 'django.contrib.auth.models.User'>

You have to save the User object before you can use it anywhere. At this
point in time, it doesn't have a primary key value, which is what the
Ranking object needs to refer to it. Actually, the pk value is None,
which 'r' then uses, which causes problems later.

Another way of thinking of this: right now, 'u' does not exist in the
database. So you cannot save 'r' to the database, since it needs to
refer to another row in the database (the one for 'u', which doesn't
exist) for the User object.

Call u.save() here (or use User.objects.create(username="swirsky")) and
everything will work.

Regards,
Malcolm



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to