Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialJoseph Anderson
10,617 PointsPost Model challenge issue with ForeignKeyField
So the challenge wants me to to create a ForeignKeyField called user related to the User model with the related_name set to "orders"
This is what I have written
class LunchOrder(Model):
order = TextField()
date = DateField()
user = ForeignKeyField(
rel_model=User,
related_name="orders"
)
It matches the video and the peewee documentation (I even tried it with the "rel_model=" removed) But it tells me that Task 1 is no longer passing. If i remove everything starting with "user" and after, I get the "no user field" error.
If I add user = TextField()
I get a "no user field" error again. Then, if I try just user = ForeignKeyField() I get the Task 1 no longer passing.
Do I need to import something to get ForeignKeyField to work? Do I have a typo I'm missing? Thanks!
2 Answers
Hanley Chan
27,771 PointsHi,
Your code should work if you put your class under the user class.
Trike Whipcat
12,726 PointsI also had this problem and came to this post for help. What Hanley means is that the LunchOrder class must be placed after the User class, otherwise the interpreter tries to reference something before it's assigned. 'Under' was a little too ambiguous for me at first, "placed below", "come after", or "placed after" would have been clearer for me. Here's how the code should look:
import datetime
from flask.ext.bcrypt import generate_password_hash
from flask.ext.login import UserMixin
from peewee import *
DATABASE = SqliteDatabase(':memory:')
class User(UserMixin, Model):
email = CharField(unique=True)
password = CharField(max_length=100)
join_date = DateTimeField(default=datetime.datetime.now)
bio = CharField(default='')
class Meta:
database = DATABASE
@classmethod
def new(cls, email, password):
cls.create(
email=email,
password=generate_password_hash(password)
)
class LunchOrder(UserMixin, Model):
order = TextField()
date = DateField()
user = ForeignKeyField(
rel_model=User,
related_name="orders"
)
def initialize():
DATABASE.connect()
DATABASE.create_tables([User], safe=True)
DATABASE.close()