I've read and reread the tutorial and I'm working on writing a very simple banking app by copying and modifying what's in the tutorial. I've started a new project and copied what was on the first two pages of the tutorial and I've written a new models file. Make migrations works okay with the new models. I tried testing these new models using the test below and the console came up with an attribute error. Did I make a stupid mistake somewhere? Any help would be much appreciated.
Traceback (most recent call last):
File "/home/DJapps/banking/mybank/banking/test_models.py", line 12, in test_animals_can_speak
self.assertEqual(person.get_first_name(), 'Bob')
AttributeError: 'Person' object has no attribute 'get_first_name'
from django.test import TestCase
from banking.models import Person
class PersonTestCase(TestCase):
def setUp(self):
Person.objects.create(first_name="Bob", last_name="Smith", login_name="myname", password="Dog")
def test_animals_can_speak(self):
"""Animals that can speak are correctly identified"""
person = Person.objects.get(first_name="Bob")
#person = mommy.make(Person)
self.assertEqual(person.get_first_name(), 'Bob')
#self.assertEqual(person.get_last_name(), 'Smith')
#self.assertEqual(person.get_login_name(), 'myname')
#self.assertEqual(person.get_password(), 'Dog')
#self.assertEqual(person._str__, person_text)
New models...
from django.db import models
# Create your models here.
class Person(models.Model):
first_name = models.CharField(max_length=4,default="Bob")
last_name = models.CharField(max_length=6,default="Smith")
login_name = models.CharField(max_length=3,default="me")
password = models.CharField(max_length=7, default="password")
person_text = models.CharField(max_length=10, default="Bob Smith")
def get_first_name(self):
return self.first_name
def get_last_name(self):
return self.last_name
def get_login_name(self):
return self.login_name
def get_password(self, user_input):
return self.password
def __str__(self):
return self.person_text
class Account1(models.Model):
account_number = models.IntegerField(default=12345678)
bank_balance = models.DecimalField(max_digits=4, decimal_places=2, default=12.99)
interest_rate = models.IntegerField(default=2)
account_text = models.CharField(max_length=16, default="Current Account")
person = models.ForeignKey(Person, on_delete=models.CASCADE, default="")
def get_account_number(self):
return self.account_number
def get_bank_balance(self):
return self.bank_balance
def deposit(self, amount):
self.bank_balance = self.bank_balance + amount
return
def get_interest_rate(self):
return self.interest_rate
def withdraw(self, amount):
self.bank_balance = self.bank_balance - amount
return
def __str__(self):
return self.account_text