เมื่อวานมีโอกาสได้ให้น็อตเข้ามาช่วย Pair Programming เรื่องการเพิ่ม dropdown ของประเภทบทความฝั่ง Admin เพื่อเลือกประเภทของบทความในขั้นตอนการสร้างบทความ โดยมีประเภท บทความทั่วไป บทความโภชนาการและบทความเภสัชสนเทศ เลยอยากทวนวิธีการที่ได้ทำดังนี้
ส่วน DB
from django_evolution.mutations import *
from django.db import models
MUTATIONS = [
AddField('News', 'type', models.ForeignKey, null=True, related_model='news.Type')
]
ขั้นตอนการดึงข้อมูลจากฐานข้อมูลออกมาใช้งานในฝั่ง Templates
def list_articles(request):
n = News.objects.filter(published_at__lte=datetime.now()).filter(status=2, article=True)
t = Type.objects.all().order_by('priority') --> ดึงข้อมูลทั้งหมดในตาราง Type โดยเรียงตาม priority
is_article = True -->เอาไว้เช็คว่าเป็นบทความนะctx = {'title': _('Recent Articles'),
'is_article': is_article,
'type': t,
'letters': string.uppercase,
'thai_letters': [unichr(i) for i in range(0x0E01, 0x0E2F) + range(0x0E40, 0x0E44)],
}
return object_list(request, queryset=n, extra_context=ctx,
paginate_by=ITEMS_PER_PAGE)
def show_articles_by_type(request,type):
c = Type.objects.filter(slug=type)
t = Type.objects.all().order_by('priority')
is_article = True
if c:
n = News.objects.filter(published_at__lte=datetime.now()).filter(type__in=c, status=2, article=True)
ctx = {'title': _('Articles') +' : ' + c[0].name,
'this-category': type,
'is_article': is_article,
'type': t,
'letters': string.uppercase,
'thai_letters': [unichr(i) for i in range(0x0E01, 0x0E2F) + range(0x0E40, 0x0E44)],
}
return object_list(request, queryset=n, extra_context=ctx,
paginate_by=ITEMS_PER_PAGE)
else:
raise Http404
การจัดการส่วน Templates
<div class="categories">
<ul class="category-list">
{% for category in type %}
{% ifequal this_category category.slug %}
<li class="this-category"><a href="/articles/{{ category.slug }}">{{ category.name }}</a></li>
{% else %}
<li><a href="/articles/{{ category.slug }}">{{ category.name }}</a></li>
{% endifequal %}
{% endfor %}
<li><a href="/scims/articles/">{{_("Pharmaceutical Articles") }}</a></li>
</ul>
</div>
{% if is_article %}
{% include "_articles_categories.html" %}
{% else %}
{% include "_categories.html" %}
{% endif %}
วิธีการประมาณนี้ที่จำได้ 55+ วิธีที่ว่ามานี่ไม่ค่อยละเอียดหรอกนะคะ แค่บันทึกไว้เท่าที่จำได้
ไม่มีความเห็น