Django-tables2: λ‚΄λ¦Όμ°¨μˆœ μ •λ ¬ μ—΄μ—μ„œ μ—΄ 맨 μ•„λž˜μ— 빈 κ°’ 배치 ν—ˆμš©

에 λ§Œλ“  2018λ…„ 08μ›” 02일  Β·  6μ½”λ©˜νŠΈ  Β·  좜처: jieter/django-tables2

#595 및 #597 μ—μ„œ λ‚΄λ¦Όμ°¨μˆœ μ—΄λ‘œ μž‘μ—…ν•  λ•Œ μ•½κ°„ λ²—μ–΄λ‚œ κ²ƒμ²˜λŸΌ λ³΄μ΄λŠ” λ‚΄λ¦Όμ°¨μˆœ μ •λ ¬ λ™μž‘μ„ λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒκ³Ό 같은 데이터 μ„ΈνŠΈλ₯Ό κ³ λ €ν•˜μ‹­μ‹œμ˜€.

| 기둝 | κ°€μΉ˜ |
| --- | --- |
| 에이 | 3 |
| λ‚˜ | 1 |
| C | - |
| λ”” | - |

κ°’ 열을 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•  λ•Œ 빈 값은 λͺ©λ‘μ˜ 맨 μ•„λž˜λ‘œ ν‘Έμ‹œλ©λ‹ˆλ‹€.

| 기둝 | κ°€μΉ˜ |
| --- | --- |
| λ‚˜ | 1 |
| 에이 | 3 |
| C | - |
| λ”” | - |

κ·ΈλŸ¬λ‚˜ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•  λ•Œ 빈 값이 λͺ©λ‘μ˜ 맨 μœ„μ— λ°°μΉ˜λ©λ‹ˆλ‹€.

| 기둝 | κ°€μΉ˜ |
| --- | --- |
| C | - |
| λ”” | - |
| 에이 | 3 |
| λ‚˜ | 1 |

μ–΄λ–€ κ²½μš°μ—λŠ” μ‚¬μš©μžκ°€ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•  λ•Œ 빈 값을 "λ¬΄μ‹œ"ν•˜κ³ , μ˜€λ¦„μ°¨μˆœκ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ λͺ©λ‘μ˜ 맨 μ•„λž˜λ‘œ λ°€μ–΄λ„£κΈ°λ₯Ό 원할 κ²ƒμž…λ‹ˆλ‹€. 이것이 κ°€λŠ₯ν•©λ‹ˆκΉŒ?

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

ν•˜, κΈ€μŽ„, λ‚˜λŠ” PR의 ν•„μš”μ„±μ— λŒ€ν•΄ 슀슀둜 μ΄μ•ΌκΈ°ν–ˆμ„ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. λ‚΄ 예제의 경우 order_FOO() λ©”μ„œλ“œμ™€ Django의 nulls_last λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ›ν•˜λŠ” λ™μž‘μ„ 얻을 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λ ‡κ²Œ:

def order_value(self, QuerySet, is_descending): if is_descending: QuerySet = QuerySet.order_by(F('value').desc(nulls_last = True)) else: QuerySet = QuerySet.order_by(F('value').asc(nulls_last = True)) return (QuerySet,True)

결과적으둜 null 값은 항상 μ—΄ λμ—μ„œ μ •λ ¬λ©λ‹ˆλ‹€. 이것은 λ‚΄ λ°μ΄ν„°λ² μ΄μŠ€κ°€ 항상 빈 값에 null을 μ‚¬μš©ν•˜λ„λ‘ ν•  수 있기 λ•Œλ¬Έμ— ν•„μš”ν•œ κ²½μš°μ— μž‘λ™ν•©λ‹ˆλ‹€.

값이 λ‹¨μˆœνžˆ λΉ„μ–΄ 있고 μž‘λ™ν•˜μ§€ μ•ŠλŠ” κ²½μš°μ— λŒ€ν•΄ 이 μ†”λ£¨μ…˜μ„ ν…ŒμŠ€νŠΈν–ˆμŠ΅λ‹ˆλ‹€. django-tables2 order_by λ™μž‘ λ‚΄μ—μ„œ 무언가λ₯Ό μˆ˜μ •ν•˜μ—¬ μ†”λ£¨μ…˜μ„ λ§Œλ“€ 수 μžˆλ‹€κ³  μƒκ°ν•˜μ§€λ§Œ μ–΄μ¨Œλ“  극단적인 κ²½μš°μ— λŒ€ν•΄ μ΄μ•ΌκΈ°ν•˜κ³  μžˆλ‹€λ©΄ μ•„λ§ˆλ„ sort-with-nulls-last order_FOO() ν•΄κ²° 방법은 μ†ŒμŠ€λ₯Ό μ—‰λ§μœΌλ‘œ λ§Œλ“œλŠ” 것보닀 λ‚«μŠ΅λ‹ˆλ‹€.

μ–΄μ¨Œλ“  λ‚΄ μš”μ²­μ΄ μ’…λ£Œλœ κ²ƒμœΌλ‘œ κ°„μ£Όν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€λ₯Έ μ‚¬λžŒμ΄ μ—„κ²©ν•˜κ²Œ λΉ„μ–΄ μžˆλŠ” 값을 같은 λ°©μ‹μœΌλ‘œ μ²˜λ¦¬ν•΄μ•Ό ν•œλ‹€κ³  μ£Όμž₯ν•˜λ©΄ PR을 λ‹€μ‹œ κ²€ν† ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λͺ¨λ“  6 λŒ“κΈ€

#529 λ³΄μ…¨λ‚˜μš”?

μ•„, 이제 μ•Œκ² μ–΄μš”. 흠, 그런 뢀뢄에 λŒ€ν•œ 홍보도 ν•œ 번 ν•΄λ³Ό 수 μžˆκ² λ„€μš”.

맀우 ν™˜μ˜ν•©λ‹ˆλ‹€!

ν•˜, κΈ€μŽ„, λ‚˜λŠ” PR의 ν•„μš”μ„±μ— λŒ€ν•΄ 슀슀둜 μ΄μ•ΌκΈ°ν–ˆμ„ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. λ‚΄ 예제의 경우 order_FOO() λ©”μ„œλ“œμ™€ Django의 nulls_last λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ›ν•˜λŠ” λ™μž‘μ„ 얻을 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λ ‡κ²Œ:

def order_value(self, QuerySet, is_descending): if is_descending: QuerySet = QuerySet.order_by(F('value').desc(nulls_last = True)) else: QuerySet = QuerySet.order_by(F('value').asc(nulls_last = True)) return (QuerySet,True)

결과적으둜 null 값은 항상 μ—΄ λμ—μ„œ μ •λ ¬λ©λ‹ˆλ‹€. 이것은 λ‚΄ λ°μ΄ν„°λ² μ΄μŠ€κ°€ 항상 빈 값에 null을 μ‚¬μš©ν•˜λ„λ‘ ν•  수 있기 λ•Œλ¬Έμ— ν•„μš”ν•œ κ²½μš°μ— μž‘λ™ν•©λ‹ˆλ‹€.

값이 λ‹¨μˆœνžˆ λΉ„μ–΄ 있고 μž‘λ™ν•˜μ§€ μ•ŠλŠ” κ²½μš°μ— λŒ€ν•΄ 이 μ†”λ£¨μ…˜μ„ ν…ŒμŠ€νŠΈν–ˆμŠ΅λ‹ˆλ‹€. django-tables2 order_by λ™μž‘ λ‚΄μ—μ„œ 무언가λ₯Ό μˆ˜μ •ν•˜μ—¬ μ†”λ£¨μ…˜μ„ λ§Œλ“€ 수 μžˆλ‹€κ³  μƒκ°ν•˜μ§€λ§Œ μ–΄μ¨Œλ“  극단적인 κ²½μš°μ— λŒ€ν•΄ μ΄μ•ΌκΈ°ν•˜κ³  μžˆλ‹€λ©΄ μ•„λ§ˆλ„ sort-with-nulls-last order_FOO() ν•΄κ²° 방법은 μ†ŒμŠ€λ₯Ό μ—‰λ§μœΌλ‘œ λ§Œλ“œλŠ” 것보닀 λ‚«μŠ΅λ‹ˆλ‹€.

μ–΄μ¨Œλ“  λ‚΄ μš”μ²­μ΄ μ’…λ£Œλœ κ²ƒμœΌλ‘œ κ°„μ£Όν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€λ₯Έ μ‚¬λžŒμ΄ μ—„κ²©ν•˜κ²Œ λΉ„μ–΄ μžˆλŠ” 값을 같은 λ°©μ‹μœΌλ‘œ μ²˜λ¦¬ν•΄μ•Ό ν•œλ‹€κ³  μ£Όμž₯ν•˜λ©΄ PR을 λ‹€μ‹œ κ²€ν† ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ„€λͺ…ν•΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!

이 쒋은 ν•΄κ²° 방법 @foldedpaper에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€ :)

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰