Django/python: (1048, "Column 'date' cannot be null") -


i have created django project in type-1 users can create post , type-2 users can bid on post out of post_queryset = post.objects.filter(accepted=false). finally, post_owner can accept bid. after accepting wanted remove accepted_object post_queryset. so, created view(accept_bid) in type-1 user can accept bid , simultaneously passes booleanfield(accepted) = true. this, post no longer appear in post_list page. when saving accept_bid instance, raising integrityerror: (1048, "column 'date' cannot null"). i'm not sure whether approach in changing booleanfield() = true in view correct. appreciate helping me solve this.

here's code:

models.py:

class post(models.model):      item = models.charfield(max_length=20)     post_owner = models.onetoonefield(settings.auth_user_model, default=1)     date = models.datefield()     accepted = models.booleanfield(default = false)   class bid(models.model):      post = models.foreignkey(post, related_name = bids)     amount = models.integerfield(max_length = 20)     bidder = models.foreingkey(settings.auth_user_model)  class auction(models.model):      post = models.onetoonefield(post)     post_owner = models.foreignkey(settings.auth_user_model, null=true, blank=true)     bid = models.onetoonefield('truck.bid', related_name='auctions') 

forms.py:

class acceptedform(forms.modelform): accepted = forms.booleanfield(required=false)      class meta:         model = post         fields = ('accepted', ) 

views.py:

def accept_bid(request, post_id, bid_id):      post = get_object_or_404(post, id=post_id)     bid = get_object_or_404(bid, id=bid_id)     if request.method=='post':         form = auctionform(request.post or none)         form1 = acceptedform(request.post)         if form.is_valid() , form1.is_valid():             accept_bid = form.save(commit=false)             accept_bid.bid = bid             accept_bid.post = post             accept_bid.post_owner = request.user             accepted = form1.save()             accepted.accepted = true             accept_bid.save()              form.save()             form1.save()     else:         form = auctionform()         form1 = acceptedform()      context = {              "bid_id" : bid_id,             "post_id" : post_id,             "bid": bid,             "post":post,             'form': form             'form1': form1,           }      return render(request, 'loggedin_load/active_deals.html', context) 

traceback:

traceback:  file "c:\python34\lib\site-packages\django\db\backends\mysql\base.py" in execute   112.             return self.cursor.execute(query, args)  file "c:\python34\lib\site-packages\mysqldb\cursors.py" in execute   226.             self.errorhandler(self, exc, value)  file "c:\python34\lib\site-packages\mysqldb\connections.py" in defaulterrorhandler   36.         raise errorvalue  file "c:\python34\lib\site-packages\mysqldb\cursors.py" in execute   217.             res = self._query(query)  file "c:\python34\lib\site-packages\mysqldb\cursors.py" in _query   378.         rowcount = self._do_query(q)  file "c:\python34\lib\site-packages\mysqldb\cursors.py" in _do_query   341.         db.query(q)   file "c:\python34\lib\site-packages\mysqldb\connections.py" in query    280.             _mysql.connection.query(self, query)   during handling of above exception ((1048, "column 'date' cannot null")), exception occurred:  file "c:\python34\lib\site-packages\django\core\handlers\base.py" in  get_response   149.                     response = self.process_exception_by_middleware(e, request)  file "c:\python34\lib\site-packages\django\core\handlers\base.py" in get_response   147.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)  file "c:\python34\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view   23.                 return view_func(request, *args, **kwargs)  file "c:\python34\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view   23.                 return view_func(request, *args, **kwargs)  file "c:\users\sumanth\desktop\django-custom-user-master\search field\project\mysite\personal\views.py" in accept_bid   447.          accepted = form1.save()  file "c:\python34\lib\site-packages\django\forms\models.py" in save   451.             self.instance.save()  file "c:\python34\lib\site-packages\django\db\models\base.py" in save   708.                        force_update=force_update, update_fields=update_fields)  file "c:\python34\lib\site-packages\django\db\models\base.py" in save_base   736.             updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)  file "c:\python34\lib\site-packages\django\db\models\base.py" in _save_table   820.             result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)  file "c:\python34\lib\site-packages\django\db\models\base.py" in _do_insert   859.                                using=using, raw=raw)  file "c:\python34\lib\site-packages\django\db\models\manager.py" in manager_method   122.                 return getattr(self.get_queryset(), name)(*args, **kwargs)  file "c:\python34\lib\site-packages\django\db\models\query.py" in _insert   1039.         return query.get_compiler(using=using).execute_sql(return_id)  file "c:\python34\lib\site-packages\django\db\models\sql\compiler.py" in execute_sql   1060.                 cursor.execute(sql, params)  file "c:\python34\lib\site-packages\django\db\backends\utils.py" in execute   79.             return super(cursordebugwrapper, self).execute(sql, params)  file "c:\python34\lib\site-packages\django\db\backends\utils.py" in execute   64.                 return self.cursor.execute(sql, params)  file "c:\python34\lib\site-packages\django\db\backends\mysql\base.py" in execute  117.                 six.reraise(utils.integrityerror, utils.integrityerror(*tuple(e.args)), sys.exc_info()[2])  file "c:\python34\lib\site-packages\django\utils\six.py" in reraise   685.             raise value.with_traceback(tb)  file "c:\python34\lib\site-packages\django\db\backends\mysql\base.py" in execute   112.             return self.cursor.execute(query, args)  file "c:\python34\lib\site-packages\mysqldb\cursors.py" in execute   226.             self.errorhandler(self, exc, value)  file "c:\python34\lib\site-packages\mysqldb\connections.py" in defaulterrorhandler   36.         raise errorvalue  file "c:\python34\lib\site-packages\mysqldb\cursors.py" in execute   217.             res = self._query(query)  file "c:\python34\lib\site-packages\mysqldb\cursors.py" in _query   378.         rowcount = self._do_query(q)  file "c:\python34\lib\site-packages\mysqldb\cursors.py" in _do_query   341.         db.query(q)  file "c:\python34\lib\site-packages\mysqldb\connections.py" in query   280.             _mysql.connection.query(self, query)  exception type: integrityerror @ /post/3/bid/7/ exception value: (1048, "column 'date' cannot null") 

the error trips when try save form1 rather when saving accept_bid instance:

file "c:\users\sumanth\desktop\django-custom-user-master\search field\project\mysite\personal\views.py" in accept_bid   447.          accepted = form1.save() 

form1 modelform based on post model. since post model has accepted attribute, don't have manually define field did here - including field in meta definition form you've done enough.

you need 1 of 3 things there:

  1. also include date field in modelform can set submitter,

  2. set model either automatically include date on creation (auto_now_add=true), or allow field blank. or,

  3. use commit=false interrupt save , add date object:

    accepted = form1.save(commit=false) accepted.date = ... accepted.save() 

also note here:

accepted = form1.save() accepted.accepted = true 

you save accepted database, update object locally. second line updating object in memory, not database. if print accepted.accepted indeed show true, if re-fetch object database , try again it'll show false since change never saved db.


Comments