def validate_bundles(self, value): if not self.instance: for b_data in value: ItemBundle.clean_itemvar(self.context['event'], b_data['bundled_item'], b_data['bundled_variation']) return value
def validate(self, data): data = super().validate(data) event = self.context['event'] full_data = self.to_internal_value(self.to_representation(self.instance)) if self.instance else {} full_data.update(data) ItemBundle.clean_itemvar(event, full_data.get('bundled_item'), full_data.get('bundled_variation')) item = self.context['item'] if item == full_data.get('bundled_item'): raise ValidationError(_("The bundled item must not be the same item as the bundling one.")) if full_data.get('bundled_item'): if full_data['bundled_item'].bundles.exists(): raise ValidationError(_("The bundled item must not have bundles on its own.")) return data