Prerequisites/What you want to achieve
I am working on a tutorial on Django.
I was referring to the following site to use the command to call the interactive shell and access the database API, but an error occurred:Please tell me the solution.
https://docs.djangoproject.com/ja/4.0/intro/tutorial02/
Problems/Error Messages you are experiencing
>>>from polls.models import Choice, Question
>>Question.objects.all()
<QuerySet [<Question: What's up?>]>
>>Question.objects.filter(id=1)
<QuerySet [<Question: What's up?>]>
>>Question.objects.filter(question_text__startswith='What')
<QuerySet [<Question: What's up?>]>
>>> from django.utils import timezone
>>current_year=timezone.now().year
>>Question.objects.get(pub_date__year=current_year)
<Question: What's up?>
>>
>>Question.objects.get(id=2)
Traceback (most recent call last):
"<console>", line 1, in <module>
"\anaconda3\envs\ev1\lib\site-packages\django\db\models\manager.py", line85, inmanager_method
return getattr(self.get_queryset(),name)(*args,**kwargs)
"\anaconda3\envs\ev1\lib\site-packages\django\db\models\query.py", line 496, inget
raise self.model.DoesNotExist(
pols.models.Question.DoesNotExist—Question matching query does not exist.
>>Question.objects.get(pk=1)
<Question: What's up?>
>>>q=Question.objects.get(pk=1)
>>q.was_published_recently()
True
>>>q=Question.objects.get(pk=1)
>>q.choice_set.all()
<QuerySet[]>
>>q.choice_set.create(choice_text='Not much',votes=0)
<Choice: Not much>
>>q.choice_set.create(choice_text='The sky',votes=0)
<Choice: The sky>
>>>c=q.choice_set.create(choice_text='Just hacking again',votes=0)
>>>c.question
<Question: What's up?>
>>q.choice_set.all()
<QuerySet[<Choice:Not much>,<Choice:The sky>,<Choice:Just hacking again>]>
>>q.choice_set.count()
3
>>Choice.objects.filter(question_pub_date_year=current_year)
Traceback (most recent call last):
File "<console>", line 1, in <module>
NameError: name 'current_year' is not defined
Affected Source Code
pols /models.py
import datetime
from django.utils import timezone
from django.db import models
class Question (models.Model):
question_text=models.CharField(max_length=200)
pub_date=models.DateTimeField('date published')
def__str__(self):
return self.question_text
def was_published_recently(self):
return self.pub_date>=timezone.now()-datetime.timedelta(days=1)
Class Choice (models.Model):
question=models.ForeignKey (Question, on_delete=models.CASCADE)
choice_text=models.CharField(max_length=200)
votes=models.IntegerField(default=0)
def__str__(self):
return self.choice_text
Comment Ready
I'm sorry, but I answered reflexively whether or not there was indentation at the beginning of the question.
In conclusion, the error is the correct situation as Tutorial
The Tutorial article corresponds to the following parts:
>>Question.objects.get(id=2)
Traceback (most recent call last):
...
DoesNotExist—Question matching query does not exist.
In my environment, it appears as follows:
>>Question.objects.get(id=2)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Develop\Python\vDjango\lib\site-packages\django\db\models\manager.py", line85, in manager_method
return getattr(self.get_queryset(),name)(*args,**kwargs)
File "C:\Develop\Python\vDjango\lib\site-packages\django\db\models\query.py", line 496, inget
raise self.model.DoesNotExist(
pols.models.Question.DoesNotExist—Question matching query does not exist.
So don't worry about continuing to do the following:
Incidentally, the source code for the updated question still lacks indentation in the return line.
You should fix it.
Below is a slightly off-target answer to the source code of the original question.
The indentation of the method part is insufficient.
Please do the following:
import datetime
from django.utils import timezone
from django.db import models
class Question (models.Model):
question_text=models.CharField(max_length=200)
pub_date=models.DateTimeField('date published')
def__str__(self):
return self.question_text
def was_published_recently(self):
return self.pub_date>=timezone.now()-datetime.timedelta(days=1)
Class Choice (models.Model):
question=models.ForeignKey (Question, on_delete=models.CASCADE)
choice_text=models.CharField(max_length=200)
votes=models.IntegerField(default=0)
def__str__(self):
return self.choice_text
You're working on a Django tutorial, but you'll need some basic knowledge of Python before you do that.
In parallel with the Django tutorial, we recommend that you also look for course materials on Python's basic knowledge.
© 2024 OneMinuteCode. All rights reserved.