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