You need to tell django what the db column name for your pollkey field is. Look 
at the dbname field option in the docs. 


Sent from my iPhone, please excuse any typos

On 28 May 2011, at 05:13, Naoko Reeves <naokoree...@gmail.com> wrote:

> I see if column is set to AutoField then Django won't send INSERT poll_key
> as null.
> Now my problem is that it doesn't return newly assigned primary key value
> for me if primary key name is _key instead of _id
> It looks as if sequence name is not understood correctly.
> Could you tell me if
> 1) I need to change sequence name to something else? Currently it is
> poll_key_seq
> 2) Is there a way to specify the sequence name?
> 
> 
> class Poll(models.Model):
>    poll_key = models.AutoField(primary_key=True)
>    poll_question = models.CharField(max_length=200, default='')
> 
> class Poll2(models.Model):
>    poll2_id = models.AutoField(primary_key=True)
>    poll2_question = models.CharField(max_length=200, default='')
> 
>>>> from mysite.polls.models import Poll2
>>>> p3 = Poll2(poll2_question='3')
>>>> p3.save()
>>>> p3.pk
> 2L
>>>> p4 = Poll2(poll2_question='4')
>>>> p4.save()
>>>> p4.pk
> 3L
>>>> from mysite.polls.models import Poll
>>>> p5 = Poll(poll_question='5')
>>>> p5.save()
>>>> print p5.pk
> None
> 
> 
> On 5/27/11 5:31 PM, "Casey Greene" <csgre...@princeton.edu> wrote:
> 
>> Doesn't autofield with primary_key=True handle this for you (instead of
>> making it an IntegerField):
>> 
>> https://docs.djangoproject.com/en/1.3/ref/models/fields/#autofield
>> 
>> Hope this helps!
>> Casey
>> 
>> On 05/27/2011 07:22 PM, Naoko Reeves wrote:
>>> Hi, I have a Django newbie question.
>>> My goal is to auto increment primary key with non Django standard column
>>> name.
>>> We are converting from existing database and primary key schema is
>>> "tablename_key" and not "id".
>>> I googled it and end up reaching to this ticket:
>>> https://code.djangoproject.com/ticket/13295
>>> So I understand that there is work in progress but I wanted find work
>>> around..
>>> 
>>> 1. My first try was to let postgres handle it.
>>> 
>>> my postgreSQL table looks like this:
>>> 
>>> CREATE TABLE poll
>>> (
>>>   poll_key integer NOT NULL DEFAULT nextval('poll_key_seq'::regclass),
>>>   poll_question character varying(200) NOT NULL,
>>>   poll_pub_date timestamp with time zone NOT NULL,
>>>   CONSTRAINT poll_pkey PRIMARY KEY (poll_key)
>>> )
>>> 
>>> My model look like this:
>>> class Poll(models.Model):
>>>     poll_key = models.IntegerField(primary_key=True)
>>>     poll_question = models.CharField(max_length=200, default='')
>>>     poll_pub_date = models.DateTimeField('date published',
>>> default=datetime.date.today())
>>>     class Meta:
>>>         db_table = u'poll'
>>> 
>>> I was hoping that with this, I could
>>> p = Poll(poll_question="Question 1?")
>>> p.save()
>>> 
>>> but this fails because Django is actually sending the following statement:
>>> INSERT INTO "poll" ("poll_key", "poll_question", "poll_pub_date")
>>> VALUES (NULL, 'Question 1?', NULL)
>>> 
>>> 
>>> 2. My Second attempt is then to add default to model
>>> 
>>> Created a function to return sequence value
>>> from django.db import connection
>>> def c_get_next_key(seq_name):
>>> """ return next value of sequence """
>>>     c = connection.cursor()
>>>     c.execute("SELECT nextval('%s')" % seq_name)
>>>     row = c.fetchone()
>>>     return int(row[0])
>>> 
>>> Calling like below works just fine. Everytime I call it, I get new number.
>>> c_get_next_key('poll_key_seq')
>>> 
>>> Then I modify Poll_key in Poll model as follows:
>>> Poll_key = models.IntegerField(primary_key=True,
>>> default=c_get_next_key('poll_key_seq'))
>>> 
>>> I went to Django Shell and created first record.
>>> p1 = Poll(poll_question="P1")
>>> p1.poll_key
>>> # this will return let's say 37
>>> p1.save()
>>> # saves just fine.
>>> 
>>> # instantiating new object
>>> p2 = Poll(poll_question="P2")
>>> p2.poll_key
>>> # this also return 37.
>>> 
>>> I know I must be doing something wrong... but could you pint me to right
>>> direction? I am expecting p2.poll_key to return 38.
>>> Thank you very much for your help in advance.
>>> 
>>> Naoko
>>> 
>>> 
>>> 
>>> 
>>> 
>>> --
>>> 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.
> 
> 
> -- 
> 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.
> 

-- 
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