I'm probably missing something simple, but I can't get my info to display
from my database.
I have 2 abstract models to make 1 normal model.
My url views aren't giving me errors, the web browser finds them.
My variables aren't correct(I can only assume).
Thanks!
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/969bead1-4344-4292-a2bc-ef009ea751c9%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
from django.db import models
# @property"""read-only"""
# def function(self):
# "description"
# return
"""Person's Name"""
class Name(models.Model):
first_name = models.CharField(
"First Name",#verbose_name
max_length=20,
help_text='First Name',
)
middle_name = models.CharField(
"Middle Name or Initial",#verbose_name
max_length=20,
blank=True,
default='',
help_text='Middle Name or Initial',
)
last_name = models.CharField(
"Last Name",#verbose_name
max_length=30,
blank=True,
default='',
help_text='Last Name',
)
@property
def full_name(self):
"""Full Name"""
return '%s %s' % (
self.first_name,
self.last_name)
@property
def full_name_mi(self):
"""Full Name w/MI"""
# Pulls only the first letter of a middle_name
if len(self.middle_name) > 0:
mi = self.middle_name[0:]
return '%s %s %s' % (
self.first_name,
mi, self.last_name)
else:
return '%s %s' % (
self.first_name,
self.last_name)
@property
def full_name_m_name(self):
"""Full Name w/Middle Name"""
if len(self.middle_name) > 0:
return '%s %s %s' % (
self.first_name,
self.middle_name,
self.last_name)
else:
return '%s %s' % (
self.first_name,
self.last_name)
class Meta:
abstract = True
ordering = ['last_name', 'first_name', 'middle_name']
from django.db import models
# @property"""read-only"""
# def function(self):
# "description"
# return
"""Phone Number"""
# phone_type choices
NONE ='NO'
HOMEPHONE = 'HP'
MOBILEPHONE = 'MP'
WORKPHONE = 'WP'
WORKCELL = 'WC'
PHONE_TYPE_CHOICES = (
(NONE, 'Select'),
(HOMEPHONE, 'Home'),
(MOBILEPHONE, 'Mobile'),
(WORKPHONE, 'Work'),
(WORKCELL, 'Work Cell'),
)
# Set default country code for PhoneNumber
default_country_code = '1'
class PhoneNumber(models.Model):
phone_type = models.CharField(
"Type",#verbose_name
max_length=2,
choices=PHONE_TYPE_CHOICES,
default=NONE,
help_text='Type of number',
)
international = models.CharField(
"International",#verbose_name
max_length=7,
default=default_country_code,
help_text='Country Code',
)
number = models.CharField(
"Number",#verbose_name
max_length=10,
help_text='10 Digit Number',
)
extension = models.CharField(
"ext.",#verbose_name
max_length=6,
blank=True,
null=True,
help_text='Extension',
)
text = models.BooleanField(
"Text",#verbose_name
default=False,
help_text='Send and Receive Text Messages',
)
smartphone = models.BooleanField(
"Smartphone",#verbose_name
default=False,
help_text='View Apps and Web Pages',
)
@property
def full_number(self):
"""Displays number with counrty code if outside the default country; does not show extension if none is given"""
country_code = ''
complete_number = '%s.%s.%s' % (
self.number[0::3],
self.number[3::3],
self.number[6::4])
ext = ''
if self.international != default_country_code:
contry_code = '(%s) ' % (self.international)
return country_code
else:
return country_code
if len(self.extension) > 0:
ext = ' ext.%s' % (self.extension)
return ext
else:
return ext
return '%s%s%s' % (country_code, complete_number, ext)
class Meta:
abstract = True
from django.db import models
from django.urls import reverse
from .name import Name
from .phone import PhoneNumber
# @property
# def function(self):
# "description"
# return
# Create your models here.
class PhoneBook(Name, PhoneNumber):
entry = models.AutoField(
"Entry", #verbose_name
primary_key=True,
)
def __str__(self):
return self.full_name_m_name
def get_absolute_url(self):
return reverse('phone.views.phonebook_entry', args=[str(self.entry)])
""" def QuerySet(self): #set up in postgresql smart search
phone_book.filter(number__contains:search_text)
phone_book.filter(full_name__icontains:search_text)
"""
from django.shortcuts import render, get_object_or_404, redirect
from .forms import PhoneBookEntryForm
from .models import PhoneBook
# Create your views here.
def contacts(request):
contact_list = PhoneBook.objects.all()
return render(request, 'phonebook.html', {'contact_list': contact_list})
def contact_create(request):
if request.method == "POST":
form = PhoneBookEntryForm(request.POST)
if form.is_valid():
new_form = form.save(commit=False)
new_form.save()
return redirect('detail', entry=new_form.entry)
else:
form = PhoneBookEntryForm()
return render(request, 'contact_create.html', {'form': form})
def contact_detail(request, entry):
contact = get_object_or_404(PhoneBook, entry=entry)
return render(request, 'contact_detail.html', {'entry': entry})
def contact_update(request, entry):
contact = get_object_or_404(PhoneBook, entry=entry)
if request.method == "POST":
form = PhoneBookEntryForm(instance=contact)
if form.is_valid():
form.save()
return redirect('detail', entry=form.entry)
else:
form = PhoneBookEntryForm()
return render(request, '.html', {'form': form})
return render(request, '.html', {'form': form})
{{ entry.full_name_mi }}{{ entry.full_number }}