๐Ÿ›์žฅ๊ณ  ๋ฐฑ์˜คํ”ผ์Šค ์ˆ˜์ • (ํŒจ์ŠคํŠธ์บ ํผ์Šค๊ฐ•์˜)

ํŒ”๋ฆฌ๋™ยท2021๋…„ 4์›” 26์ผ
0

โญ๏ธ์žฅ๊ณ  ๋ฐฑ ์˜คํ”ผ์Šค ์ˆ˜์ •

๐Ÿ“ˆ๊ณผ์ •

order๋ชจ๋ธ ํ•„๋“œ ์ถ”๊ฐ€

class Order(models.Model):
    fcuser = models.ForeignKey('fcuser.Fcuser', on_delete=models.CASCADE, verbose_name='์‚ฌ์šฉ์ž')
    product = models.ForeignKey('product.Product', on_delete=models.CASCADE, verbose_name='์ƒํ’ˆ')
    quantity = models.IntegerField(verbose_name='์ˆ˜๋Ÿ‰')
    status = models.CharField(
        choices=(
            ('๋Œ€๊ธฐ์žฅ', '๋Œ€๊ธฐ์ค‘'),
            ('๊ฒฐ์ œ๋Œ€๊ธฐ', '๊ฒฐ์ œ๋Œ€๊ธฐ'),
            ('๊ฒฐ์ œ์™„๋ฃŒ', '๊ฒฐ์ œ์™„๋ฃŒ'),
            ('ํ™˜๋ถˆ', 'ํ™˜๋ถˆ')), 
            default='๋Œ€๊ธฐ์ค‘', max_length=32, verbose_name='์ƒํƒœ')
    memo = models.TextField(null=True, blank=True, verbose_name='๋ฉ”๋ชจ')
    register_date = models.DateTimeField(auto_now_add=True, verbose_name='๋“ฑ๋ก๋‚ ์งœ')
  • ๊ธฐ์กด ๋ชจ๋ธ์—์„œ status, memoํ•„๋“œ๊ฐ€ ์ถ”๊ฐ€ ๋˜์—ˆ๋‹ค.
  • status์˜ default๊ฐ’์€ ๊ธฐ์กด์— statusํ•„๋“œ๊ฐ€ ์ƒ๊ธฐ๊ธฐ์ „์— ์žˆ๋˜ ์นœ๊ตฌ๋“ค์˜ ๊ฐ’์„ ๋ฌด์—‡์œผ๋กœ ํ• ์ง€ ๋””ํดํŠธ๊ฐ’์„ ์ •ํ•œ ๊ฒƒ์ด๋‹ค.
  • memo์˜ null=True, blank=True๋Š” ๋นˆ๊ฐ’์ด์–ด๋„ ๊ดœ์ฐฎ๋‹ค๋Š” ํ‘œ๊ธฐ๋‹ค. ์ด์ „์— ํŒŒ์ด๋ณด ๊ฒŒ์‹œํŒ ํ–ˆ์„ ๋•Œ ํ–ˆ๋˜ ๊ธฐ์–ต์ด ๋‚œ๋‹ค.
  • choices ํ•ญ๋ชฉ์€ ํŠœํ”Œ์•ˆ์— ํŠœํ”Œ์„ ๋งŒ๋“ค์–ด์„œ ์•ž์—๊ฐ’์€ db์˜ ํ…Œ์ด๋ธ” ์ด๋ฆ„ ๋’ท๊ฐ’์€ adminํŽ˜์ด์ง€์— ํ‘œ์‹œ๋˜๋Š” ๊ฐ’์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŠœํ”Œ์˜ ์š”์†Œ๋“ค์„ ์„ ํƒํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ค€๋‹ค.

order admin

from django.contrib import admin
from .models import Order
from django.utils.html import format_html
# Register your models here.

class OrderAdmin(admin.ModelAdmin):
    list_filter = ('status',)
    list_display = ('fcuser', 'product', 'styled_status')

    def styled_status(self,obj):
        if obj.status == 'ํ™˜๋ถˆ':
            return format_html(f'<span style="color:red">{obj.status}</span>')
        if obj.status == '๊ฒฐ์ œ์™„๋ฃŒ':
            return format_html(f'<span style="color:green">{obj.status}</span>')
        return format_html(f'<b>{obj.status}</b>')

    styled_status.short_description = '์ƒํƒœ'
    
admin.site.register(Order, OrderAdmin)
  • list_filter = ('status',)๋ฅผ ์ƒ์„ฑํ•ด์„œ ํ•„ํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์—ˆ๋‹ค.

  • list_display ์— ํ•จ์ˆ˜๋„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ํ•จ์ˆ˜๋กœ ์Šคํƒ€์ผ๋ง์„ ํ•ด์ฃผ์—ˆ๋‹ค.
  • ํ•จ์ˆ˜์ด๋ฆ„์œผ๋กœ list_display์— ์˜ฌ๋ ธ์œผ๋‹ˆ ์˜์–ด๋กœ ๋œ ํ•จ์ˆ˜ ์ด๋ฆ„์œผ๋กœ ์ƒํƒœ๊ฐ€ ํ‘œ์‹œ๋˜๋‹ˆ๊นŒ styled_status.short_description = '์ƒํƒœ'๋กœ ํ•œ๊ธ€๋กœ ๋ฐ”๊พธ์–ด์ค€๋‹ค.

product admin

from django.contrib import admin
from .models import Product
from django.utils.html import format_html
from django.contrib.humanize.templatetags.humanize import intcomma
# Register your models here.

class ProductAdmin(admin.ModelAdmin):
    list_display = ('name', 'price_format', 'styled_stock')
    
    def price_format(self,obj):
        price = intcomma(obj.price)
        return f'{price} ์›'

    def styled_stock(self,obj):
        stock = obj.stock
        if obj.stock <= 50:
            stock = intcomma(stock)
            return format_html(f'<span style="color:red">{stock} ๊ฐœ</span>')
        
        return f'{intcomma(stock)}๊ฐœ'

    styled_stock.short_description = '์žฌ๊ณ '
    price_format.short_description = '๊ฐ€๊ฒฉ.'

admin.site.register(Product, ProductAdmin)
  • ์ƒํ’ˆ ์–ด๋“œ๋ฏผ๋„ ๋น„์Šทํ•œ ์ž‘์—…์„ ํ•ด์ฃผ์—ˆ๋‹ค.

ํ…Œ๋งˆ๋ณ€๊ฒฝ

app ์ด๋ฆ„ ๋ณ€๊ฒฝ

3.1 ~ 3.8 (๊ฐ•์˜ ์ง„ํ–‰๋„)

profile
๋ฐฐ์›€์˜ ๊ธฐ๋ก

1๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2021๋…„ 4์›” 28์ผ

ํŒ”๋ฆฌ๋™ ๋ฉ‹์žˆ๋‹ค..

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ