Когда я создаю объект в админке 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
        )
Вернуться на верх