Find choices of a field, whether it has choices or has a queryset.

	Args:
		field (BoundField): Django form boundfield

	Returns:
		list: List of choices

def get_choices(field):
	"""
	Find choices of a field, whether it has choices or has a queryset.

	Args:
		field (BoundField): Django form boundfield

	Returns:
		list: List of choices
	"""	
	empty_label = getattr(field.field, "empty_label", False)
	needs_empty_value = False
	choices = []

	# Data is the choices
	if hasattr(field.field, "_choices"):
		choices = field.field._choices

	# Data is a queryset
	elif hasattr(field.field, "_queryset"):
		queryset = field.field._queryset
		field_name = getattr(field.field, "to_field_name") or "pk"
		choices += ((getattr(obj, field_name), str(obj)) for obj in queryset)

	# Determine if an empty value is needed
	if choices and (choices[0][1] == BLANK_CHOICE_DASH[0][1] or choices[0][0]):
		needs_empty_value = True

		# Delete empty option
		if not choices[0][0]:
			del choices[0]

	# Remove dashed empty choice
	if empty_label == BLANK_CHOICE_DASH[0][1]:
		empty_label = None

	# Add custom empty value
	if empty_label or not field.field.required:
		if needs_empty_value:
			choices.insert(0, ("", empty_label or BLANK_CHOICE_DASH[0][1]))

	return choices