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 trialtomasvukasovic
24,022 PointsWhats up with PK's? - Django course Views
So my question is the following I have done the Django course and specially when adding instances to a Model the views must have a Pk of the table if I did understand correctly, but Kenneth didn't explain why we needed them the only thing I got out of it was that its the prime key of the table.
Anyone can explain me in a better detail why the PK is so important, how to use it and when to assign it?
2 Answers
Chris Freeman
Treehouse Moderator 68,441 PointsAll database tables must have a mechanism to sort the entries within the table. If a model does not specify an attribute to be the primary key (pk), the database will automatically add an id
column to each entry. This id
column will be marked as the default primary key for the table. "pk" is a reference to whichever column is designated as the primary key column.
When creating a new instance and saving to the database, a pk is automatically generated and saved along with the new entry.
The primary key (pk) is used when refer to a specific instance (entry) with in a table.
The "pk of the table" is not necessary in saving the form in your code because the form should be associated with a model within the definition of creationForm
. The form is saved in this model's database table.
Post back if you need more details.
tomasvukasovic
24,022 PointsSo I made this view and it saved to my DB with no problem at all, I honestly do not get the usage of PK's
def creation_form(request):
form = forms.creationForm()
if request.method == 'POST':
form = forms.creationForm(request.POST)
if form.is_valid():
form.save()
return render(request, 'sgt_app/creation_form.html', {'form':form})
Chris Freeman
Treehouse Moderator 68,441 PointsIf I may give advice on posting questions, It's best to post additional information about your question as a Comment instead of an Answer. Posting as an Answer makes the question look "answered" and reduces the number of people viewing your question. I wandered in because I was curious what the answer was.
tomasvukasovic
24,022 Pointstomasvukasovic
24,022 PointsHey chris thanks a lot for the reply, You see I am able to seed my DB with the forms, but I wanna make a search form so I can then edit them, and I haven't been able to accomplish this, django's course with kenneth is great but this topic hasn't been addressed. Do you have any idea on how I could accomplish this? my gut tells me I could use the pks
Chris Freeman
Treehouse Moderator 68,441 PointsChris Freeman
Treehouse Moderator 68,441 PointsThe forms aren't saved as themselves. The data from the form is saved as an instance of the model the form was based on. It is these model's data that are retrieved from the database.
If the forms are based on the model
MyModel
, then all of the form data is in the table "MyModel"Check out the Database QuerySet API for more ways to get specific instances from the database.