首页 > 解决方案 > 在 django 视图中提交时从验证中排除字段

问题描述

这是我的模型

class Food: 
    category = models.ForeignKey(
        Category, on_delete=models.CASCADE, related_name="foods"
    )
    name = models.CharField(max_length=255)

这是我的表格

class FoodForm(forms.ModelForm):
    location = forms.ModelChoiceField(
        choices=CHOICES required=True
    )

    class Meta:
        model = Food
        fields = (
            "name",
            "location",
            "category"
        )

更新后,我不需要保存位置。我只需要它来过滤类别,因为它取决于它,但我不必保存它。提交更新后,它会抛出错误'Food' object has no attribute 'location'。有什么办法可以在提交时排除这个字段?

这是我的看法

 class FoodUpdateView(BaseUpdateView):

    form_class = forms.FoodForm

    def get_queryset(self):
        return Food.objects.all()

    def form_valid(self, form):
        return super().form_valid(form)

    def form_invalid(self, form):
        return redirect(self.get_success_url())

标签: djangodjango-viewsdjango-forms

解决方案


推荐阅读