NULL 로 저장된 필드값을 비교하는 방법이 머였지? DB 마다 다를 수 있으니 잘 챙겨보시고, PostgreSQL 에서의 정답은 IS NULL IS NOT NULL SELECT id, first_name, last_name, email, phone FROM contacts WHERE phone IS NULL; https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-is-null/ PostgreSQL IS NULL Summary: in this tutorial, you will learn how to use the PostgreSQL IS NULL operator to check if a value is NULL or not. Introduc..
modelform을 사용하면서 model 에 정의되지 않는 별도의 사용자 필드를 추가해야 하는 경우가 많다. (ㅋ 나만 그런가) 암튼 이런경우, 템플릿에서는 안 보이기를 원하는 것이 당연하다. 이미 준비되어 있다 장고는 대부분이 forms.HiddenInput() class TagStatusForm(forms.ModelForm): class Meta: model = TagStatus widgets = {'tag': forms.HiddenInput()} https://stackoverflow.com/questions/15795869/django-modelform-to-have-a-hidden-input Django ModelForm to have a hidden input So I have my TagSt..
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..
장고 템플릿에서 이 데이터가 있는지 없는지 보고 어떤 표현을 해야 하는 경우가 다반사이다. 이때 자꾸 헷갈려서 여기 한번 적어 둔다. 이런 내용은 매번 찾아보는 듯 쓸때마다 그냥 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..
원래 자동으로 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 = __..
이거 가장 기본인데, 저장은 되는데 내가 그 값을 보고 쓸 수는 없다니, 말도 안된다. 쓰기만 하면 내부적으로 막 돌아가서 자동 저장되는 것처럼 보이니깐 막상 어떤 값을 뽑아 쓰려면 참나... 암튼 저장되는 객체의 필드를 참고하고 싶었는데 어떻게 참고해야 하는지 몰랐다. 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):..
html form 필드에 다양한 속성값을 주고 싶다...이건 기본이다. 장고 폼을 쓰면서 이런 속성을 쉽게 줄 수 있는 방법은 다양하게 있겠지만 그냥 아래 글 처럼 속성을 주는 것이 편할 듯 이글을 참고하시길 => Django Form에서 DOM class 설정 등의 front-end 조작법 # myapp/forms.py class MyForm( forms.ModelForm ): class Meta: model = MyModel def __init__( self, *args, **kwargs ): super( MyForm, self ).__init__( *args, **kwargs ) self.field[ 'my_field' ].widget.attrs.update( { 'class': 'form-cont..