I am trying to create an e-commerce site (CS50 Project 2) that allows the user to add a listing, created through the Listings Model, to their WatchList. I am using a Django form with a Boolean field. I need help saving the listing to the WatchList Model. Also, since there will be more than one WatchList because of the multiple users, should I implement Sessions, and if so, how do I do that?
views.py
def listing(request, id):
#gets listing
listing = Listings.objects.get(id=id)
watchlist_form = WatchListForm()
watchlist_form = WatchListForm(request.POST)
if watchlist_form.is_valid():
watchlist = watchlist_form.save(commit=False)
watchlist.user = request.user
watchlist.save()
return render(request, "auctions/listing.html",{
"auction_listing": listing,
"watchlistForm": watchlist_form
})
else:
return render(request, "auctions/listing.html",{
"auction_listing": listing,
"watchlistForm": watchlist_form
})
return render(request, "auctions/listing.html",{
"auction_listing": listing
"watchlistForm": watchlist_form
})
models.py
class Listings(models.Model):
CATEGORY = [
("Miscellaneous", "Miscellaneous"),
("Movies and Television", "Movies and Television"),
("Sports", "Sports"),
("Arts and Crafts", "Arts and Crafts"),
("Clothing", "Clothing"),
("Books", "Books"),
]
title = models.CharField(max_length=64)
description = models.CharField(max_length=500)
bid = models.DecimalField(max_digits=1000000000000, decimal_places=2)
image = models.URLField(null=True, blank=True)
category = models.CharField(max_length=64, choices=CATEGORY, default=None)
user = models.ForeignKey(User, on_delete=models.CASCADE, default="")
class WatchList(models.Model):
listing = models.ManyToManyField(Listings)
user = models.ForeignKey(User, on_delete=models.CASCADE, default="")
add_to_watchlist = models.BooleanField(default=False)
watchlist views.py
def watchlist(request):
watchlist = WatchList.objects.filter(user=request.user)
get_listings = watchlist.listings.all()
listings = get_listings.objects.all()
#listings = [listings.title for listings in watchlist.objects.all()]
return render(request, "auctions/watchlist.html",{
"listings": listings
})
fixed views.py
def listing(request, id):
#gets listing
listing = Listings.objects.get(id=id)
watchlist_form = WatchListForm()
if request.method == "POST":
watchlist_form = WatchListForm(request.POST)
if watchlist_form.is_valid():
new_watchlist_listing = watchlist.listings.add(listing)
WatchList.add_to_watchlist = True
return render(request, "auctions/listing.html",{
"auction_listing": listing,
"watchlistForm": watchlist_form
})
else:
return render(request, "auctions/listing.html",{
"auction_listing": listing,
"watchlistForm": watchlist_form
})
return render(request, "auctions/listing.html",{
"auction_listing": listing,
"watchlistForm": watchlist_form
})
source https://stackoverflow.com/questions/72411422/how-to-save-data-to-a-django-model-in-views-py
Comments
Post a Comment