UpdateView 를 이용해서 view 함수를 꾸미는 경우 url 에 정의되어 있는 path parameter 를 어떻게 보나 살펴보고 있다. 그냥 view 함수는 그냥 매개변수로 넘겨주니깐 쉽게 되는데, class view 로 하는경우는 멀로 참고하나? 정답은 kwargs['변수명'] 뽑아 쓰라는 것 이네!! 아래 예제를 보면, self.kwargs["원하는변수명"] 이런식으로 뽑아쓰고 있는 것을 볼 수 있다. class DNSSettingsUpdateView(UpdateView): model = Domain form_class = NsRecordModelForm template_name = "engine/dns_settings.html" def get_object(self, queryset=None..
폼 객체를 한줄씩 쭉 나열되어 있고, 체크박스가 맨 앞에 있어서 체크를 하면 해당 줄이 활성화 되도록 하는 것 많이 정답들이 나와 있지만, 간단하게 구현한 결과를 저장 $("input:checkbox").on('click', function() { var target_input_name = "#" + $(this).val() + "_quantity" if ( $(this).prop('checked') ) { console.log($(this).val()) $(target_input_name).prop("disabled", false); $(target_input_name).focus(); } else { $(target_input_name).prop("disabled", true); $(target_in..
장고 템플릿에서 이 데이터가 있는지 없는지 보고 어떤 표현을 해야 하는 경우가 다반사이다. 이때 자꾸 헷갈려서 여기 한번 적어 둔다. 이런 내용은 매번 찾아보는 듯 쓸때마다 그냥 None 을 체크하면 될 듯하다. 아래처럼 == None 을 체크하던지, 아니면 그냥 변수명만 조건문에 넣어도 되는 것 같다. {% if profile.user.first_name == None %} {% if not profile.user.first_name %} https://stackoverflow.com/questions/11945321/what-is-the-equivalent-of-none-in-django-templates What is the equivalent of "none" in django templates?..
보통 urls.py 파일에 여러가기 view 의 주소를 많이 지정해 둔다. 코딩중에 해당 페이지로 이동하거나 render 를 하고 싶다면 이 view 에 맵핑된 주소를 불러와야 하는데 주소를 바로 주게 되면 혹시 변경이 생기는 경우, 그냥 소스 전체를 찾아서 수정해야 한다. 이를 방지하기 위해 url 에 접근하는 함수가 몇개 있는데, 결론은 그냥 resolve_url redirect 이정도 쓰면 될듯 from django.shortcuts import resolve_url, redirect resolve_url('blog:post_detail', 10) # '/blog/10/' redirect('blog:post_detail', 10) 장고 템플릿에서 쓰는 방법은 다들 아는 바와 같이 아래처럼 사용하면 ..
LEFT JOIN 해서 테이블을 쫙 보여주고 싶었는데 ORM 의 기본기능으로는 안되는 건가? 일단 급한대로 raw sql을 직접 집어넣는 형태로 구현을 해 놓고 보자. item_list = Parts.objects.raw( "SELECT devices_parts.*, devices_lineparts.quantity \ FROM devices_parts \ LEFT JOIN devices_lineparts \ ON devices_parts.id=devices_lineparts.parts_id AND devices_lineparts.line_id=" + str(line_pk) + " ORDER BY devices_parts.group0_id ASC, devices_parts.group1_id ASC, dev..
요거 쉬운거 같은데, 예제들이 죄다 json으로 바꿔서 API 호출하는 형태로 되어 있는 것이 많네. 그냥 html 페이지에 있는 form submit을 jquery ajax 함수로 호출하는 방법을 정리해 두자. 이걸 한 이유는 submit 하고, 바로 그 정보를 이용해서 새창을 띄우도록 하려고 하니깐 ajax async false 로 동작 시켜야 했기 때문이다. 그냥 코드를 보자. $("#sel2").click(function(e){ e.preventDefault(); // avoid to execute the actual submit of the form. var button = $(this); var form = $("#mainform"); var actionUrl = form.attr('actio..
원래 자동으로 Date picker 가 포함되는 widget이 나왔던 거 같은데, 잘 안되네. DB Model 에 날짜 관련 필드를 설정한 곳은 widget 이 date picker 같은 것이 가능하도록 나와야 한다. 아래 코드처럼, class Meta 에 해당 필드의 Widget 을 직접 지정해주면 머 당연히 된다. class Meta: model = CreateNewPatient fields = ['first_name', 'nickname','last_name', 'date_of_birth', 'school_grade', 'sex', 'school'] widgets = { 'date_of_birth': forms.DateInput(format=('%m/%d/%Y'), attrs={'class':'fo..
너무 기본적이라 알고 있을 수 있지만, 불편했기에 정리해둠 Form, Modelform, BSModalModelForm 에서 request 객체를 직접 접근이 안되기에, 왜 안될까 보는 중에 __init__ 함수 호출시에 매개변수로 넘어온다는 것을 보니 그냥 그값을 저장해서 사용하자는 접근 코드를 보는 것이 낫겠다 class ProductProfileUpdateForm(BSModalModelForm, ProductProfileForm): # date = forms.DateField( # error_messages = { # 'invalid': 'YYYY-MM-DD 입력' # }) title = "" is_admin = 0 class Meta: model = ProductProfile fields = __..
그냥 노트 저장용, 선택된 값에 따라 특정 Input 을 비활성화 시킬 때 사용하는 코드 attr removeAttr prop 이런 것들을 잘써야 하네. $("[name$='-group0']").on("change", function(){ // //selected value // console.log($(this).val()); // console.log($("option:selected", this).attr("value")); // //selected option element // console.log($("option:selected", this)); // console.log($("option:selected", this).text()); // console.log($(this).find("op..
이거 가장 기본인데, 저장은 되는데 내가 그 값을 보고 쓸 수는 없다니, 말도 안된다. 쓰기만 하면 내부적으로 막 돌아가서 자동 저장되는 것처럼 보이니깐 막상 어떤 값을 뽑아 쓰려면 참나... 암튼 저장되는 객체의 필드를 참고하고 싶었는데 어떻게 참고해야 하는지 몰랐다. self.form_class.xxxx self.instance.xxxx self.form_class.instance.xxxx 다 실패, 정답은 self.object.xxxx @method_decorator(admin_required, name="dispatch") class PartsUpdateView(BSModalUpdateView): model = Parts filter = "" template_name = "devices/_moda..
model 에 바인딩된 model form view 등을 쓰게 되면 사용자 정의 필드, 혹은 값을 따로 받아서 처리하기가 약간 애매했다. 머든 방법은 있으니깐,, form 에서 사용자 변수 필드를 hidden 으로 보내줘도 받는놈이 받아야 하는데, model 에 연결된 것들은 해당 필드만 싹 가져오니깐 내가 고생해서 올려준 필드값을 볼 수 없다. 그래서 form_valid 를 overriding 해서 미리 보고, 내부 변수에 넣어두고 사용하자. @method_decorator(admin_required, name="dispatch") class PartsUpdateView(BSModalUpdateView): model = Parts filter = "" template_name = "devices/_mo..
일단 안 정보는 적어둬야 한다. SQL는 한번에 하나씩 수행되므로, 하나의 atomic 으로 묶여야 하는 오퍼레이션의 경우에는 처리 방법이 따로 있어야 할 듯 했는데....정답이 있었네 https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=pjok1122&logNo=221609547295 [Python / Django] DetailView, ListView, FormView, Form 활용하기 (오버라이딩, 전달 객체 추가, 인자 추가) 1. DetailView (Template에 추가 데이터 전달하기) DetailView는 queryset이나 model을 전달받고, url... blog.naver.com def clean(self): ..
자기 자신의 레코드 중에 하나를 Foreign Key 로 등록하는 경우와 필드를 합쳐서 중복이 생기지 않도록 설정하는 방법을 알아보자. 길게 설명이 필요없다. 그냥 아래 예제로 끝 class PartsGroup(models.Model): name = models.CharField(max_length=256, verbose_name="Name") level = models.CharField(max_length=1, default="0", verbose_name="Level", null=True, blank=True) parent = models.ForeignKey("self", on_delete=models.PROTECT, verbose_name="Parent", null=True, blank=True) ..
장고에서 Modal 창으로 처리하는 함수들을 위해 Django Bootstrap Modal Forms 라이브러리를 활용하고 있다. 홈페이지는 아래를 참고하세요. https://github.com/trco/django-bootstrap-modal-forms GitHub - trco/django-bootstrap-modal-forms: A Django plugin for creating AJAX driven forms in Bootstrap modal. A Django plugin for creating AJAX driven forms in Bootstrap modal. - GitHub - trco/django-bootstrap-modal-forms: A Django plugin for creating AJ..
서비스를 만들다 보면 여러가지 텍스트가 많이 있다. 한국사람만 쓰면 그냥 한글로 하면 되는데, 국제화 시대에 맞추려면 이런 표기말들은 언어별 테이블에서 가져다 쓸 수 있도록 해야 한다. 친절하게 이런 기능들은 이미 Django 에 내장되어 있다. 일단 아래 함수를 먼저 알아야 하고, 그 함수를 라벨이나 다국어가 필요한 곳에는 반드시 적용해 둬야 한다. ugettext 함수나 ugettext_lazy 함수로 라벨을 등록해 두자. from django.db import models from django.contrib.auth.models import User from django.utils.translation import ugettext_lazy as _ class Article(models.Model):..