This is probably fine the way it's currently being used in corehq/apps/reports/generic.py, but can be confusing if the user is not aware that the returned object is a generator:

```property
rows = obj.export_rows
assert list(rows) != [] # expected
assert list(rows) == [] # what?!
```

If you want to use a generator I'd recommend defining it as a method instead of a property and naming it something like `iter_export_rows`.