Utilizo estos diferentes fragmentos de código en diferentes partes de mi código. Para evitar posibles errores a lo largo del tiempo, me gustaría implementar una lista de configuración a la que puedan acceder estas dos secciones. La lista se alarga con el tiempo con más entradas. ¿Tiene una idea de cómo lograrlo?

Aquí la lista de "configuración" # 1 y # 2 debe acceder para realizar la instrucción filter y if:

list = [TYPE_OF_PEOPLE_ATTENDING, HEARING_ABOUT_THE_EVENT, MISSING_EVENT_INFORMATION, REASON_FOR_ATTENDING]

1

entities = (
    Entity.objects.values("answer__question__focus", "name")
    .annotate(count=Count("pk"))
    .annotate(total_salience=Sum("salience"))
    .filter(
        Q(answer__question__focus=QuestionFocus.TYPE_OF_PEOPLE_ATTENDING) |
        Q(answer__question__focus=QuestionFocus.HEARING_ABOUT_THE_EVENT) |
        Q(answer__question__focus=QuestionFocus.MISSING_EVENT_INFORMATION) |
        Q(answer__question__focus=QuestionFocus.REASON_FOR_ATTENDING)
    )
)

2

if (
    answer_obj.question.focus == QuestionFocus.TYPE_OF_PEOPLE_ATTENDING
    or answer_obj.question.focus == QuestionFocus.HEARING_ABOUT_THE_EVENT
    or answer_obj.question.focus == QuestionFocus.MISSING_EVENT_INFORMATION
    or answer_obj.question.focus == QuestionFocus.REASON_FOR_ATTENDING
):
    entities = analyze_entities(answer_obj.answer)
    bulk_create_entities(entities, response, answer_obj)
2
Joey Coder 16 oct. 2019 a las 10:18

1 respuesta

La mejor respuesta

Debería poder reescribir ambas declaraciones para usar directamente una lista:

VALID_TYPES = [TYPE_OF_PEOPLE_ATTENDING, HEARING_ABOUT_THE_EVENT, MISSING_EVENT_INFORMATION, REASON_FOR_ATTENDING]

1

entities = (
    Entity.objects.values("answer__question__focus", "name")
    .annotate(count=Count("pk"))
    .annotate(total_salience=Sum("salience"))
    .filter(answer__question__focus__in=VALID_TYPES)

2

if (answer_obj.question.focus in VALID_TYPES):
    entities = analyze_entities(answer_obj.answer)
    bulk_create_entities(entities, response, answer_obj)
0
Daniel Hepper 16 oct. 2019 a las 08:29