Usage questions like this belong on the django-users list - this list
is for the development of django itself.

On Mon, Mar 16, 2009 at 9:38 AM, Yaniv Haber <[email protected]> wrote:
>
> hi,
>
> I need to create 2 objects, one containing a reference to the other,
> in one shot. I get an IntegrityError exception while trying to do so,
> claiming that the foreign key is None on creation. Hope someone can
> help...
> (when I refresh the browser and rePOST the data it works as the
> Product object is already there and is not created at the same time)
>
> Thanks, Yaniv
>
> I have the following models:
>
> Class Product
>    productId   = models.AutoField(primary_key=True)
>    name                = models.CharField(max_length=200, unique=True)
>    description    = models.CharField(max_length=200, blank=True)
>
> Class Manufacturer
>    manId            = models.AutoField(primary_key=True)
>    product          = models.ForeignKey(Product)
>    contact          = models.ForeignKey(User)
>    price             = models.PositiveIntegerField()
>
> I created a form containing fields for both, with a 'save' function:
>
> class ProductForm(forms.Form):
>    name = forms.CharField(max_length=200)
>    description = forms.CharField(max_length=200)
>    price = forms.IntegerField(min_value=0)
>
>    def save(self):
>          prod = Product(name=self.cleaned_data['name'],
>                    description=self.cleaned_data['description'])
>          prod.save()
>
>          ma = Manufacturer(product=prod,
>                  contact=self.data
> ['user'],                                  # this is being passed by
> the view
>                  price=self.cleaned_data['price'])
>           ma.save();
>
> The problem: the new product is being saved but on the
> manufacturer.save() I get the following exception:
>
> Exception Type:         IntegrityError
> Exception Value:        (1048, "Column 'product_id' cannot be null")
> Exception Location:     C:\Development\Python25\Lib\site-packages\django
> \db\backends\mysql\base.py in execute, line 88
>
> Environment:
>
> Request Method: POST
> Request URL: http://localhost:8000/addproduct/
> Django Version: 1.0.2 final
> Python Version: 2.5.4
> Installed Applications:
> ['django.contrib.auth',
>  'django.contrib.contenttypes',
>  'django.contrib.sessions',
>  'django.contrib.sites',
>  'django.contrib.admin',
>  'django.views.generic',
>  'mysite.myapp',
>  'registration']
> Installed Middleware:
> ('django.middleware.common.CommonMiddleware',
>  'django.contrib.sessions.middleware.SessionMiddleware',
>  'django.contrib.auth.middleware.AuthenticationMiddleware',
>  'django.middleware.doc.XViewMiddleware')
>
>
> Traceback:
> File "C:\Development\Python25\Lib\site-packages\django\core\handlers
> \base.py" in get_response
>  86.                 response = callback(request, *callback_args,
> **callback_kwargs)
> File "C:\Development\Python25\Lib\site-packages\django\contrib\auth
> \decorators.py" in __call__
>  67.             return self.view_func(request, *args, **kwargs)
> File "C:\Development\googleapp_projects\busa\..\mysite\myapp\views.py"
> in registerProduct
>  63.             f.save()
> File "C:\Development\googleapp_projects\busa\..\mysite\myapp\forms.py"
> in save
>  76.         ma.save();
> File "C:\Development\Python25\Lib\site-packages\django\db\models
> \base.py" in save
>  311.         self.save_base(force_insert=force_insert,
> force_update=force_update)
>
>
> >
>



-- 
Collin Grady

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

Reply via email to