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