У меня есть приложение, в котором мне нужно запросить базу данных на определенную дату, чтобы проверить, есть ли запись уже для даты x для пользователя y.Как запросить определенный день (DateField) в django ORM
У меня есть модель, которая имеет следующие поля:
class MyModel(models.Model):
user = models.ForeignKey(User)
day = models.DateField()
info = models.CharField(max_length=100)
В forms.py у меня есть:
class MyForm(forms.ModelForm):
class Meta:
model = MyModel
и в коде views.py я хочу, чтобы проверить, если этот день существует в базе данных, поэтому я бегу:
from datetime import date
from myapp.models import MyModel
from myapp.forms import MyForm
...
#inside the view function
form = MyForm(request.POST)
day = date(form.day)
if days.objects.filter(user=request.user, day=bookday).exists():
... do stuff
И это дает мне:
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/test_url/
Django Version: 1.5
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'south',
'myapp')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')
Traceback:
File "/django/env/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
115. response = callback(request, *callback_args, **callback_kwargs)
File "/django/env/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
25. return view_func(request, *args, **kwargs)
File "/django/env/myproject/myapp/views.py" in test_url
26. bookday = date(form.day)
Exception Type: AttributeError at /test_url/
Exception Value: 'MyForm' object has no attribute 'day'
Хотя он явно имеет дневную форму как DateField. Как я могу сделать то, что необходимо в этом случае?
POST-данные:
POST
Variable Value
csrfmiddlewaretoken = u'blahblah'
day = u'03/27/2013'
user = u'2'
HTML-шаблон формы:
<form method="post" action="." >
{{ form.user }}
{{ form.day}}
<input type="submit" value="Submit" />
{% csrf_token %}
</form>
EDIT: Я разъяснила код и поставить StackTrace.
какая линия вызывает ошибку? можете ли вы включить трассировку и определение вашего класса модели? – shx2
Откуда берутся «дни»? Пожалуйста, опубликуйте всю функцию просмотра, над которой вы работаете. Вам не хватает важной информации. 'bookday' - это объект datetime, а' MyForm' выглядит как обычная форма. Не модель БД. – CppLearner
@ shx2 Включил в себя определение трассировки и модели – Orca