class CodeLookupField(forms.CharField): def __init__(self, model, field_name, *args, **kwargs): self.model = model self.field_name = field_name super(CodeLookupField, self).__init__(*args, **kwargs) def clean(self, data): try: return self.model.objects.get(**{self.field_name:data}) except self.model.DoesNotExist: return None