pythonclub / pythonclub.github.io

Blog colaborativo sobre tecnologias que envolvam a linguagem Python
http://pythonclub.com.br/
207 stars 109 forks source link

criando-novos-comandos-no-django-admin #233

Closed rg3915 closed 8 years ago

rg3915 commented 8 years ago

@LucasMagnum sobre o código a seguir:

def handle(self, title=None, year=None, **options):
        if title is not None and year is not None:
            q = Movie.objects.filter(Q(title__istartswith=title) &
                                     Q(year=year))
        elif title is not None:
            q = Movie.objects.filter(title__istartswith=title)
        elif year is not None:
            q = Movie.objects.filter(year=year)
        for i in q:
            print(i.year, i.title)
        print('\n%s filmes localizados.' % q.count())

Não sei pq, mas acho que ele poderia ser melhorado, parece que tem inconsistência de lógica. O que sugere?

LucasMagnum commented 8 years ago

@rg3915

def handle(self, title=None, year=None, **options):
    filters = {
        'title__istartswith': title,
        'year': year
    }

    filter_by = {key: value for key, value in filters.items() if value is not None}
    queryset = Movie.objects.filter(**filter_by)

    for movie in queryset:
        print(movie.year, movie.title)

    print('\n%s filmes localizados.' % queryset.count())
rg3915 commented 8 years ago

@LucasMagnum filter_by = {key: value for key, value in filters.items() if value is not None} não é redundante em relação ao dicionário que vc criou anteriomente?

rg3915 commented 8 years ago

@LucasMagnum está tudo pronto. Ficou bom agora?

LucasMagnum commented 8 years ago

@rg3915 eu pelo menos não me lembro de nenhuma forma no momento para utilizar somente uma variavel e deixar o código simples de ler e entender.

Mas não acho que seja redundante, primeiros todos os possiveis filtros são declarados e depois utilizamos somente os que possuem algum valor. É melhor do que uma cadeia enorme de if e else.

rg3915 commented 8 years ago

@LucasMagnum @luzfcb finalizem isso ai por favor. Publica o post, pq já cansei de revisar. Valeu.

rg3915 commented 8 years ago

@luzfcb @LucasMagnum acho que agora está finalizado. Favor publicarem o post. Obrigado.

raphapassini commented 8 years ago

@rg3915 só vi esse ajuste. Acredito que acertando isso ai já podemos publicar! :)

rg3915 commented 8 years ago

@raphapassini me ajuda ai por favor, nao manjo tanto assim.

rg3915 commented 8 years ago

@raphapassini @luzfcb @LucasMagnum Será que agora está aprovado? :)

LucasMagnum commented 8 years ago

:+1:

@raphapassini e @luzfcb alguma outra observação?

rg3915 commented 8 years ago

@LucasMagnum @luzfcb @raphapassini Pessoal, tem como vcs publicarem meu post por favor? To precisando dele, é importante pra mim. Por favor. Obrigado.

rg3915 commented 8 years ago

@LucasMagnum @luzfcb @raphapassini valeu pessoal. :+1: