我有一個模型,我需要在其中驗證 m2m 字段和常規字段是否互斥。(即您只能擁有其中之一,而不能同時擁有兩者。)class EventFrequency(models.Model): weekdays = models.CharField(...) dates = models.ManyToManyField(...)由于一個是 m2m,覆蓋模型save()不起作用。(保存模型,然后添加m2m)我能夠通過覆蓋在管理類中成功拋出錯誤save_related(),但它不會顯示在管理表單中。這只是一個常規的服務器錯誤。class EventFrequencyAdmin(VersionAdmin, admin.ModelAdmin): model = EventFrequency filter_horizontal = ('dates',) def save_related(self, request, form, formsets, change): super(EventFrequencyAdmin, self).save_related(request, form, formsets, change) if form.instance.dates.exists() and form.instance.weekdays: raise ValidationError('Cannot select both dates and weekdays.')我能夠捕獲錯誤以嘗試通過重寫將其顯示給用戶changeform_view()。除了重定向之外,它似乎運行良好。form_url沒有價值,因此是''。def changeform_view(self, request, object_id=None, form_url='', extra_context=None): try: return super(EventFrequencyAdmin, self).changeform_view(request, object_id, form_url, extra_context) except ValidationError as e: print('************* caught error *************') self.message_user(request, e, level=messages.ERROR) return HttpResponseRedirect(form_url)我究竟做錯了什么?
添加回答
舉報
0/150
提交
取消