いつもお世話になっております。
表題の件の通りなのですが、データベースに数値で入っている値を取得して
viewsを通して文字列に変換したいです。
また入っている数値によって変換される文字列をif文で変更しようと思っております。
コードは下記のとおりです。
models.py
from django.db import models class Property(models.Model): title = models.CharField(max_length=50, blank=False) comment = models.CharField(max_length=300, blank=False) image = models.ImageField(upload_to = 'photos') vacant_day_num = models.PositiveSmallIntegerField(blank=False) place = models.CharField(max_length=50, blank=False) price = models.PositiveSmallIntegerField(blank=False) create_date = models.DateTimeField(auto_now=True) def __str__(self): return self.title
views.py
from django.shortcuts import render, get_object_or_404 from django.contrib.auth.models import User from .models import Property import logging def index(request): propertys = Property.objects.all().order_by('-create_date') for property in propertys: logging.debug(property.vacant_day_num) if property['vacant_day_num'] = 3: property['vacant_day'] = '月、火' else: return render(request, 'mutual/index.html',{'propertys': propertys})
上記のfor分の箇所を色々やってみたのですが、わかりませんでした。
伝わるかわかりませんが一応PHPの感じで記載しておきました。
vacant_day_numが3だったらvacant_dayに「月、火」を入れてpropertysに戻してあげたいです。
python,djangoを始めたばかりで戸惑っております。
どなたかご教授いただけると幸いです。
ご回答の程よろしくお願いいたします。
修正後
def index(request): propertys = Property.objects.all().order_by('-create_date') for property in propertys: if property.vacant_day_num == 3: logging.debug('num is 3') setattr(property, 'vacant_day','月、火') logging.debug(property.vacant_day) elif property.vacant_day_num == 96: logging.debug('num is 96') setattr(property, 'vacant_day','月、火、水、木、金、土、日') logging.debug(property.vacant_day) return render(request, 'mutual/index.html',{'propertys': propertys})
modelを修正
from django.db import models class Property(models.Model): title = models.CharField(max_length=50, blank=False) comment = models.CharField(max_length=300, blank=False) image = models.ImageField(upload_to = 'photos') vacant_day_num = models.PositiveSmallIntegerField(blank=False) place = models.CharField(max_length=50, blank=False) price = models.PositiveSmallIntegerField(blank=False) create_date = models.DateTimeField(auto_now=True) def get_vacant_day(self) -> str: if self.vacant_day_num == 3: return '月、火' elif self.vacant_day_num == 96: return '月、火、水、木、金、土、日' def __str__(self): return self.title
viewを修正(コメントアウト)
def index(request): propertys = Property.objects.all().order_by('-create_date') logging.debug(property.vacant_day) """ for property in propertys: setattr(property, 'vacant_day','') if property.vacant_day_num == 3: setattr(property, 'vacant_day','月、火') property_list.append(property.vacant_day) logging.debug(property.vacant_day) elif property.vacant_day_num == 96: setattr(property, 'vacant_day','月、火、水、木、金、土、日') property_list.append(property.vacant_day) logging.debug(property.vacant_day) """ return render(request, 'mutual/index.html',{'propertys': propertys})
template
{% extends 'mutual/base.html' %} {% block content %} <h2>トップページ</h2> {% for property in propertys %} <table> <tr> <td rowspan="4"><img src="{{property.image.url}}" class="photo-img"></td> <td>物件名</td> <td>{{property.title}}</td> <tr> <td>曜日</td> <td>{{property.vacantn_day}}</td> </tr> <tr> <td>場所</td> <td>{{property.place}}</td> </tr> <tr> <td>金額</td> <td>{{property.price}}</td> </tr> <tr> <td colspan="3">{{property.comment}}</td> </tr> </table> {% endfor %} {% endblock %}
回答2件
あなたの回答
tips
プレビュー