У объекта 'function' нет атрибута 'listings'
Я пытаюсь создать сайт электронной коммерции (CS50 Project 2), который позволяет пользователю добавлять и удалять элементы листинга в свой список наблюдения. При попытке добавить листинг, который является моделью, в модель списка наблюдения я получаю эту ошибку: 'function' object has no attribute 'listings'
, которая соответствует этой строке кода в моем views.py: new_watchlist_listing = watchlist.listings.add(listings)
.
Пользователь может добавить элемент объявления в свой список наблюдения через форму Django с булевым полем, и мне нужна помощь, чтобы сделать это поле истинным после того, как пользователь добавил объявление в свой список наблюдения (я хочу, чтобы флажок, который видит пользователь, был отмечен, чтобы он мог потенциально удалить объявление из своего списка наблюдения).
views.py
def listing(request, id):
#gets listing
listing = Listings.objects.get(id=id)
watchlist_form = WatchListForm()
#checks if request method is post for all the forms
if request.method == "POST":
watchlist_form = WatchListForm(request.POST)
#checks if watchlist form is valid
if watchlist_form.is_valid():
new_watchlist_listing = watchlist.listings.add(listings)
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
})
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):
listings = models.ManyToManyField(Listings)
user = models.ForeignKey(User, on_delete=models.CASCADE, default="")
add_to_watchlist = models.BooleanField(default=False)
forms.py
lass WatchListForm(forms.ModelForm):
class Meta:
model = WatchList
fields = ['add_to_watchlist']
Сообщение об ошибке, которое я получаю
new_watchlist_listing = watchlist.listings.add(listings)
AttributeError: 'function' object has no attribute 'listings'