Когда я создаю объект в админке Django, метод `form_valid()` не вызывается
Когда создается новый Listing
, метод form_valid()
создает объект Bid
. Однако, когда я использую Django Admin для создания нового Listing
, то объект Bid
не создается, потому что form_valid()
не вызывается.
def form_valid(self, form):
form.instance.author = self.request.user
self.object = form.save()
# place a bid in the Bids table with the value starting bid and users id
bid = round(float(form.cleaned_data['starting_bid']), 2)
Bid.objects.create(
bid_value = bid,
bidder = self.request.user,
item=self.object
)
print('form_valid() called')
return HttpResponseRedirect(self.get_success_url())
Я новичок в Python и Django - возможно, код для создания нового Bid
должен быть в методе на Listing
модели?
A ModelAdmin
has no .form_valid(…)
method [Django-doc], this is for class-based views (CBVs) that inherit from a FormMixin
[Django-doc]. The ModelAdmin
will call the .save_model(…)
method [Django-doc], so you should implement the logic in that method:
class MyModelAdmin(admin.ModelAdmin):
# …
def save_model(self, request, obj, form, change):
obj.author = request.user
super().save_model(request, obj, form)
bid = round(float(form.cleaned_data['starting_bid']), 2)
Bid.objects.create(
bid_value = bid,
bidder = request.user,
item=obj
)