๐Ÿ›์žฅ๊ณ  ๋ฐฑ์˜คํ”ผ์Šค ์ˆ˜์ •-3(order admin - changeform_view ๋ฒ„ํŠผ ์ˆ˜์ •)

ํŒ”๋ฆฌ๋™ยท2021๋…„ 5์›” 12์ผ
post-thumbnail

๐Ÿ›์žฅ๊ณ  ๋ฐฑ์˜คํ”ผ์Šค ์ˆ˜์ •-3

order admin - changeform_view ์ˆ˜์ •

  • ์ฃผ๋ฌธ ๋ฆฌ์ŠคํŠธ์—์„œ ํ•ญ๋ณต์„ ํด๋ฆญํ•˜๋ฉด ์ด๋ŸฐํŽ˜์ด์ง€๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ ์—ฌ๊ธฐ์„œ ์ €์žฅ ๋ฐ ํŽธ์ง‘ ๊ณ„์† ๋ฒ„ํŠผ๊ณผ ์ €์žฅ ๋ฐ ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ์ถ”๊ฐ€ ๋ฒ„ํŠผ์„ ์—†์•จ ๊ฒƒ์ด๋‹ค.
  • ๊ฐ„๋‹จํ•˜๊ฒŒ css์—์„œ display:None ์ฒ˜๋ฆฌ๋ฅผ ํ•ด๋„ ๋˜์ง€๋งŒ ์žฅ๊ณ  ์–ด๋“œ๋ฏผ ํŽ˜์ด์ง€์˜ ํ…œํ”Œ๋ฆฟ์„ ๊นŒ๋ณด์ž

changeform_view์— ๊ด€๋ จํ•œ ํŽ˜์ด์ง€๋ฅผ ์ฐพ์•„๋ณด์ž!

  • ๊ฐ€์ƒํ™˜๊ฒฝ์— django > contrib > admin > templates > admin > change_form.html์— ์žˆ๋‹ค.

  • change_form.html์„ ์‚ดํŽด๋ณด์ž

  • ์ญ‰์ญ‰ ๋‚ด๋ฆฌ๋‹ค๋ณด๋ฉด {% block submit_buttons_bottom %}{% submit_row %}{% endblock %} ๋ถ€๋ถ„์ด ์ˆ˜์ƒํ•˜๋‹ค. ์™œ๋ƒํ•˜๋ฉด

  • ์•„๋ž˜์— ์Šคํฌ๋ฆฝํŠธ์ฝ”๋“œ๊ฐ€ ์žˆ๊ณ  ๊ฑฐ๊ธฐ ์œ„์— ๋ฒ„ํŠผ ํผ์ด ์žˆ๋Š”๋ฐ ๊ทธ๊ฒŒ {% block submit_buttons_bottom %}{% submit_row %}{% endblock %} ์ด๋ถ€๋ถ„ ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
    • {% submit_row %}๋ธ”๋ก์€ ๋˜ ๋‹ค๋ฅธ html์ฝ”๋“œ์— ์žˆ๋‹ค.

submit_line.html

{% load i18n admin_urls %}
<div class="submit-row">
{% block submit-row %}
{% if show_save %}<input type="submit" value="{% translate 'Save' %}" class="default" name="_save">{% endif %}
{% if show_delete_link and original %}
    {% url opts|admin_urlname:'delete' original.pk|admin_urlquote as delete_url %}
    <p class="deletelink-box"><a href="{% add_preserved_filters delete_url %}" class="deletelink">{% translate "Delete" %}</a></p>
{% endif %}
{% if show_save_as_new %}<input type="submit" value="{% translate 'Save as new' %}" name="_saveasnew">{% endif %}
{% if show_save_and_add_another %}<input type="submit" value="{% translate 'Save and add another' %}" name="_addanother">{% endif %}
{% if show_save_and_continue %}<input type="submit" value="{% if can_change %}{% translate 'Save and continue editing' %}{% else %}{% translate 'Save and view' %}{% endif %}" name="_continue">{% endif %}
{% if show_close %}<a href="{% url opts|admin_urlname:'changelist' %}" class="closelink">{% translate 'Close' %}</a>{% endif %}
{% endblock %}
</div>
  • {% if show_save_and_add_another %}, {% if show_save_and_continue %} ์ด ๋‘๊ฐœ๊ฐ€ ๋‚ด๊ฐ€ ์ง€์šฐ๋ ค๋Š” ๋ฒ„ํŠผ์ด๋‹ค.
    • if๋ฌธ์ด๋ฏ€๋กœ false๋กœ ๋งŒ๋“ค์–ด๋ฒ„๋ฆฌ๋ฉด ๋”์ด์ƒ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค.

changeform_view ์ฝ”๋“œ ์ˆ˜์ •

def changeform_view(self, request, object_id=None, form_url='', extra_context=None):
        order = Order.objects.get(pk=object_id)
        extra_context = { 'title': f"'{order.fcuser.email}'์˜ '{order.product.name}'์ฃผ๋ฌธ ์ˆ˜์ •ํ•˜๊ธฐ" }
        extra_context['show_save_and_add_another'] = False >>>>
        extra_context['show_save_and_continue'] = False >>>>> ์ˆ˜์ •์ฝ”๋“œ
        return super().changeform_view(request, object_id, form_url, extra_context)
  • ์ด์ „์— ์ฃผ๋ฌธ ์ƒ์„ธ ํŽ˜์ด์ง€ ์ˆ˜์ •ํ•  ๋•Œ changeform_view ํ•จ์ˆ˜๋ฅผ ๊ฑด๋“ค์˜€๋Š”๋ฐ ์ด๋ฒˆ์—๋„ ๋™์ผํ•˜๋‹ค.
  • extra_context['show_save_and_add_another'] = False extra_context['show_save_and_continue'] = False ์•„๊นŒ if๋ฌธ์— ์žˆ๋˜ ์นœ๊ตฌ๋“ค์„ extra contextํ•ญ๋ชฉ์—์„œ False๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š”๋‹ค.

OrderAdmin ์ˆ˜์ •

class OrderAdmin(admin.ModelAdmin):
    list_filter = ('status',)
    list_display = ('fcuser', 'product', 'styled_status', 'action')
    change_list_template = 'admin/order_change_list.html'
    change_form_template = 'admin/order_change_form.html'
  • OrderAdmin์˜ change_form_template = 'admin/order_change_form.html'์„ ๋ฐ”๊ฟ”์ค˜์•ผ ํด๋ž˜์Šค(Orderadmin)๋‚ด์—์„œ ์‚ฌ์šฉํ•œ ํ•จ์ˆ˜(changeform_view)๊ฐ€ ์ ์šฉ๋œ๋‹ค.

  • order app์— htmlํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ฃผ์—ˆ๋‹ค.

order_change_form.html

{% extends 'admin/change_form.html' %}
{% load static %}
  • admin์˜ change_form.html์„ ์ƒ์†๋ฐ›์•„์™”๋‹ค.
profile
๋ฐฐ์›€์˜ ๊ธฐ๋ก

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