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:
also include
date
field in modelform can set submitter,set model either automatically include date on creation (
auto_now_add=true
), or allow field blank. or,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
Post a Comment