newbie foreignkey question

4 views
Skip to first unread message

Patrick

unread,
Dec 16, 2010, 12:04:28 PM12/16/10
to Pinax Users
I want to create an auction site and am having trouble figuring out
how to deal with multiple foreign keys in one class.

I have a form that is used to bid on an item, but I keep getting an
instance error when I try to save.
I believe the problem is in my view.

Any help would be great.


I'm getting the following error:
cannot assign "<User: XXXX>": "Bid.bidder" must be a "Bidder"
instance.

#classes
class Listing(models.Model):
owner = models.ForeignKey(User, verbose_name=_('Im the wanter'))
title = models.CharField(_('short description'), max_length=255)

class Bidder(models.Model):
user = models.ForeignKey(User, verbose_name=_('bidder'),
unique=True)

class Bid(models.Model):
listing = models.ForeignKey(Listing)
bidder = models.ForeignKey(Bidder)
bidding_price = models.DecimalField(_('offering bid',),
max_digits=6, decimal_places=2,blank=True, null=False)

#form
class BidForm(forms.ModelForm):
class Meta:
model = Bid
exclude = ('bidder', 'listing',)


#view
@login_required
def newbid(request,listing_id):
''' Create a new bid with request.user as owner
'''
if request.method == 'POST':
form = BidForm(request.POST)
if form.is_valid:
bid=form.save(commit=False)
bidder_person=Bidder(user = request.user)
bidder_person.save()

bid.bidder = bidder_person #problem is here!

l = get_object_or_404(Listing, pk=listing_id)
bid.listing = l
bid.listing.owner = l.owner
bid.save()
return HttpResponseRedirect(reverse('listings_all'))

else:
form = BidForm()

return create_object(
request,
form_class = BidForm
)
Reply all
Reply to author
Forward
0 new messages