On Mar 25, 9:32 am, Tom Evans <tevans...@googlemail.com> wrote: > On Thu, Mar 25, 2010 at 5:52 AM, Kenneth Gonsalves <law...@au-kbc.org> wrote: > > hi, > > > I have a model like this: > > > name - unique > > slno - not null > > mode - not null > > > If the instance does not exist and I give all three values to get_or_create, > > it works > > > if the instance exists, and I give values for slno and mode which are > > different > > from the existing ones - I get a programming error as get_or_create tries to > > create a new instance and falls foul of the unique constraint on name. It > > works if I only give the value for name - it gets the instance and then I > > can > > add the new values and save > > > if the instance does not exist and I only give the value for name, I get a > > programming error that the not null constraints on slno and mode are > > violated. > > > so it looks to me that get_or_create will only work reliably when there are > > no > > not null or unique constraints in the model. Or am I missing something? > > I think you are missing the optional kwarg 'initial', which is a > dictionary of initial values to use when the instance does not exist. > So not > > foo, created = Foo.objects.get_or_create(name=name, > sino=sino,mode=mode) > > but > > foo, created = Foo.objects.get_or_create(name=name, > initial={'sino': sino, 'mode': mode, }) > > Cheers > > Tom
Actually the kwarg is 'defaults', not 'initial'. See http://docs.djangoproject.com/en/1.1/ref/models/querysets/#get-or-create-kwargs -- DR. -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@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.