Django Form BidForm(request.POST or None) 有时加载表单数据,否则为空

时间:2021-08-01 16:17:28

标签: django django-models django-forms

我有以下 BidForm 类...

class BidForm(ModelForm):
    # listing = forms.CharField(widget=forms.HiddenInput())


    class Meta:
        model = Bids
        fields = ('listing', 'bid_price')


    # def clean_bid_price(self):
    #     data = self.cleaned_data["bid_price"]
    #     listing = self.instance.listing
    #     if listing.last_high_bid:
    #         if data <= listing.last_high_bid.bid_price:
    #             raise forms.ValidationError('bid price less than last bid price')
    #     else:
    #         if data < listing.starting_bid_price:
    #             raise forms.ValidationError('bid price less than starting price')
    #     return data
  1. 当我取消对列表字段或 clean_bid_price 验证方法的注释时,表单无法加载表单数据,并且我获得了实例对象设置为 None 类型的表单实例。

  2. 如果我让表单保持原样,那么我调试了表单的完整 init 方法并且看不到帖子数据的加载位置。尽我所能在 pycharm 调试器中看到,发布数据永远不会加载到 init 方法中的表单或模型实例上。然而不知何故,表单的模型实例神奇地获得了发布数据和字段集。已经花了很多时间尝试调试简单的函数,但不知道为什么会失败。

  3. 何时调用字段上的干净方法?在 django 3.1.7 中,我的 clean 方法根本没有被调用,因为 _errors 的 dict 为空,而 is_valid 或 self._errors 根本无法命中 self.clean 方法。

0 个答案:

没有答案