<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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