Discussion:
"Choices are: %s" % (name, ", ".join(available))) django.core.exceptions.FieldError: Cannot resolve keyword 'date' into field. Choices are: authorized, created_on, end, id, start, title, user, user_id
Elias Coutinho
2016-11-13 19:20:02 UTC
Permalink
Boa tarde pessoal,

Estava assistindo o vídeo de um colega


E por sinal está muito bom.

O problema aparece depois que eu tentei adicionar campos e editar outros.

No meu models ficou assim:

class Booking(models.Model):


user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=
'usuário')
title = models.CharField('evento', max_length=128)
start = models.DateField('inicio')
end = models.DateField('fim')
created_on = models.DateTimeField('solicitado em', default=timezone.now)
authorized = models.BooleanField('autorizado', default=False)

class Meta:
verbose_name = 'reserva'
verbose_name_plural = 'reservas'
ordering = ('-start',)

def __str__(self):
return self.event




Já no SERIALIZER ficou assim:

from django.contrib.auth.models import User
from rest_framework import serializers

from vitrinebela.bookings.models import Booking


class BookingSerializer(serializers.HyperlinkedModelSerializer):

user = serializers.PrimaryKeyRelatedField(
read_only=False,
queryset=User.objects.all()
)

class Meta:
model = Booking
fields = ('user', 'title', 'start', 'end','created_on', 'authorized'
)


e por fim as views ficaram assim:


def list(request):
selected_date = date.today()
return list_date(request, selected_date.year, selected_date.month)


def list_date(request, year, month):

try:
selected_date = date(int(year), int(month), 1)
except ValueError:
raise Http404

context = {
'selected_date': selected_date,
'calendar': tuple(_calendar(selected_date)),
'next': selected_date + timedelta(days=31),
'previous': selected_date - timedelta(days=1)
}

return render(request, 'bookings/bookings_list.html', context)


def _calendar(selected_date):
year, month = selected_date.year, selected_date.month
filters = {'date__year': year, 'date__month': month}
bookings = {b.date: b for b in Booking.objects.filter(**filters)}
calendar = Calendar(firstweekday=6)
for week in calendar.monthdatescalendar(year, month):
yield [(day, bookings.get(day)) for day in week]



E ao rodar ele apresenta a mensagem abaixo no terminal:







*"Choices are: %s" % (name, ", ".join(available)))
django.core.exceptions.FieldError: Cannot resolve keyword 'date' intofield.
Choices are: authorized, created_on, end, id, start, title, user, user_id*
O que pode estar errado?
--
Você está recebendo esta mensagem porque se inscreveu no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasil+***@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/d/optout.
Rafael dos Santos Gonçalves
2016-11-13 21:35:05 UTC
Permalink
bookings = {*b.date*: b for b in Booking.objects.filter(**filters)}

esse b.date deve ser o problema. No seu model não existe o campo date. Como
B é o models Booking.
Post by Elias Coutinho
Boa tarde pessoal,
Estava assistindo o vídeo de um colega https://www.youtube.com/watch?
v=PwskBz5re4Q&feature=youtu.be
E por sinal está muito bom.
O problema aparece depois que eu tentei adicionar campos e editar outros.
user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=
'usuário')
title = models.CharField('evento', max_length=128)
start = models.DateField('inicio')
end = models.DateField('fim')
created_on = models.DateTimeField('solicitado em', default=timezone.
now)
authorized = models.BooleanField('autorizado', default=False)
verbose_name = 'reserva'
verbose_name_plural = 'reservas'
ordering = ('-start',)
return self.event
from django.contrib.auth.models import User
from rest_framework import serializers
from vitrinebela.bookings.models import Booking
user = serializers.PrimaryKeyRelatedField(
read_only=False,
queryset=User.objects.all()
)
model = Booking
fields = ('user', 'title', 'start', 'end','created_on',
'authorized')
selected_date = date.today()
return list_date(request, selected_date.year, selected_date.month)
selected_date = date(int(year), int(month), 1)
raise Http404
context = {
'selected_date': selected_date,
'calendar': tuple(_calendar(selected_date)),
'next': selected_date + timedelta(days=31),
'previous': selected_date - timedelta(days=1)
}
return render(request, 'bookings/bookings_list.html', context)
year, month = selected_date.year, selected_date.month
filters = {'date__year': year, 'date__month': month}
bookings = {b.date: b for b in Booking.objects.filter(**filters)}
calendar = Calendar(firstweekday=6)
yield [(day, bookings.get(day)) for day in week]
*"Choices are: %s" % (name, ", ".join(available)))
django.core.exceptions.FieldError: Cannot resolve keyword 'date' intofield.
Choices are: authorized, created_on, end, id, start, title, user, user_id*
O que pode estar errado?
--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil"
dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie
Para mais opções, acesse https://groups.google.com/d/optout.
--
Rafael dos Santos Gonçalves
Ramal - 6757
--
Você está recebendo esta mensagem porque se inscreveu no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasil+***@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/d/optout.
Elias Coutinho
2016-11-13 23:11:07 UTC
Permalink
<Loading Image...>

<https://lh3.googleusercontent.com/-2YAXwZOTbxE/WCjzBL1VZBI/AAAAAAAAF0Y/MU-cPj9RP8EHXfySaRm8aUZMIAy50JWSgCLcB/s1600/erro.png>


Acho que não pois modifiquei para start e não resolveu.
Junto ao erro vou postar abaixo o erro do template:



Em domingo, 13 de novembro de 2016 18:35:11 UTC-3, Rafael dos Santos
Post by Rafael dos Santos Gonçalves
bookings = {*b.date*: b for b in Booking.objects.filter(**filters)}
esse b.date deve ser o problema. No seu model não existe o campo date. Como
B é o models Booking.
Post by Elias Coutinho
Boa tarde pessoal,
Estava assistindo o vídeo de um colega
http://youtu.be/PwskBz5re4Q
E por sinal está muito bom.
O problema aparece depois que eu tentei adicionar campos e editar outros.
user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=
'usuário')
title = models.CharField('evento', max_length=128)
start = models.DateField('inicio')
end = models.DateField('fim')
created_on = models.DateTimeField('solicitado em', default=timezone.
now)
authorized = models.BooleanField('autorizado', default=False)
verbose_name = 'reserva'
verbose_name_plural = 'reservas'
ordering = ('-start',)
return self.event
from django.contrib.auth.models import User
from rest_framework import serializers
from vitrinebela.bookings.models import Booking
user = serializers.PrimaryKeyRelatedField(
read_only=False,
queryset=User.objects.all()
)
model = Booking
fields = ('user', 'title', 'start', 'end','created_on',
'authorized')
selected_date = date.today()
return list_date(request, selected_date.year, selected_date.month)
selected_date = date(int(year), int(month), 1)
raise Http404
context = {
'selected_date': selected_date,
'calendar': tuple(_calendar(selected_date)),
'next': selected_date + timedelta(days=31),
'previous': selected_date - timedelta(days=1)
}
return render(request, 'bookings/bookings_list.html', context)
year, month = selected_date.year, selected_date.month
filters = {'date__year': year, 'date__month': month}
bookings = {b.date: b for b in Booking.objects.filter(**filters)}
calendar = Calendar(firstweekday=6)
yield [(day, bookings.get(day)) for day in week]
*"Choices are: %s" % (name, ", ".join(available)))
django.core.exceptions.FieldError: Cannot resolve keyword 'date' intofield.
Choices are: authorized, created_on, end, id, start, title, user, user_id*
O que pode estar errado?
--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil"
dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele,
Para mais opções, acesse https://groups.google.com/d/optout.
--
Rafael dos Santos Gonçalves
Ramal - 6757
--
Você está recebendo esta mensagem porque se inscreveu no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasil+***@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/d/optout.
Elias Coutinho
2016-11-13 23:27:18 UTC
Permalink
Rafael, você estava correto!

Obrigado amigo!

olhe onde estava o erro!

def _calendar(selected_date):
year, month = selected_date.year, selected_date.month
filters = {'start__year': year, 'start__month': month} <<<<==== Onde tem start havia data
bookings = {b.start: b for b in Booking.objects.filter(**filters)}
calendar = Calendar(firstweekday=6)
for week in calendar.monthdatescalendar(year, month):
yield [(day, bookings.get(day)) for day in week]




Em domingo, 13 de novembro de 2016 18:35:11 UTC-3, Rafael dos Santos
Post by Rafael dos Santos Gonçalves
bookings = {*b.date*: b for b in Booking.objects.filter(**filters)}
esse b.date deve ser o problema. No seu model não existe o campo date. Como
B é o models Booking.
Post by Elias Coutinho
Boa tarde pessoal,
Estava assistindo o vídeo de um colega
http://youtu.be/PwskBz5re4Q
E por sinal está muito bom.
O problema aparece depois que eu tentei adicionar campos e editar outros.
user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=
'usuário')
title = models.CharField('evento', max_length=128)
start = models.DateField('inicio')
end = models.DateField('fim')
created_on = models.DateTimeField('solicitado em', default=timezone.
now)
authorized = models.BooleanField('autorizado', default=False)
verbose_name = 'reserva'
verbose_name_plural = 'reservas'
ordering = ('-start',)
return self.event
from django.contrib.auth.models import User
from rest_framework import serializers
from vitrinebela.bookings.models import Booking
user = serializers.PrimaryKeyRelatedField(
read_only=False,
queryset=User.objects.all()
)
model = Booking
fields = ('user', 'title', 'start', 'end','created_on',
'authorized')
selected_date = date.today()
return list_date(request, selected_date.year, selected_date.month)
selected_date = date(int(year), int(month), 1)
raise Http404
context = {
'selected_date': selected_date,
'calendar': tuple(_calendar(selected_date)),
'next': selected_date + timedelta(days=31),
'previous': selected_date - timedelta(days=1)
}
return render(request, 'bookings/bookings_list.html', context)
year, month = selected_date.year, selected_date.month
filters = {'date__year': year, 'date__month': month}
bookings = {b.date: b for b in Booking.objects.filter(**filters)}
calendar = Calendar(firstweekday=6)
yield [(day, bookings.get(day)) for day in week]
*"Choices are: %s" % (name, ", ".join(available)))
django.core.exceptions.FieldError: Cannot resolve keyword 'date' intofield.
Choices are: authorized, created_on, end, id, start, title, user, user_id*
O que pode estar errado?
--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil"
dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele,
Para mais opções, acesse https://groups.google.com/d/optout.
--
Rafael dos Santos Gonçalves
Ramal - 6757
--
Você está recebendo esta mensagem porque se inscreveu no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasil+***@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/d/optout.
Rafael dos Santos Gonçalves
2016-11-14 19:33:28 UTC
Permalink
nao tinha visto o erro de cima kkk.

Que bom que encontrou :D
Post by Elias Coutinho
Rafael, você estava correto!
Obrigado amigo!
olhe onde estava o erro!
year, month = selected_date.year, selected_date.month
filters = {'start__year': year, 'start__month': month} <<<<==== Onde tem start havia data
bookings = {b.start: b for b in Booking.objects.filter(**filters)}
calendar = Calendar(firstweekday=6)
yield [(day, bookings.get(day)) for day in week]
Em domingo, 13 de novembro de 2016 18:35:11 UTC-3, Rafael dos Santos
Post by Rafael dos Santos Gonçalves
bookings = {*b.date*: b for b in Booking.objects.filter(**filters)}
esse b.date deve ser o problema. No seu model não existe o campo date. Como
B é o models Booking.
Post by Elias Coutinho
Boa tarde pessoal,
Estava assistindo o vídeo de um colega https://www.youtube.com/watch?
v=PwskBz5re4Q&feature=youtu.be
E por sinal está muito bom.
O problema aparece depois que eu tentei adicionar campos e editar outros.
user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=
'usuário')
title = models.CharField('evento', max_length=128)
start = models.DateField('inicio')
end = models.DateField('fim')
created_on = models.DateTimeField('solicitado em', default=timezone.
now)
authorized = models.BooleanField('autorizado', default=False)
verbose_name = 'reserva'
verbose_name_plural = 'reservas'
ordering = ('-start',)
return self.event
from django.contrib.auth.models import User
from rest_framework import serializers
from vitrinebela.bookings.models import Booking
user = serializers.PrimaryKeyRelatedField(
read_only=False,
queryset=User.objects.all()
)
model = Booking
fields = ('user', 'title', 'start', 'end','created_on',
'authorized')
selected_date = date.today()
return list_date(request, selected_date.year, selected_date.month)
selected_date = date(int(year), int(month), 1)
raise Http404
context = {
'selected_date': selected_date,
'calendar': tuple(_calendar(selected_date)),
'next': selected_date + timedelta(days=31),
'previous': selected_date - timedelta(days=1)
}
return render(request, 'bookings/bookings_list.html', context)
year, month = selected_date.year, selected_date.month
filters = {'date__year': year, 'date__month': month}
bookings = {b.date: b for b in Booking.objects.filter(**filters)}
calendar = Calendar(firstweekday=6)
yield [(day, bookings.get(day)) for day in week]
*"Choices are: %s" % (name, ", ".join(available)))
django.core.exceptions.FieldError: Cannot resolve keyword 'date' intofield.
Choices are: authorized, created_on, end, id, start, title, user, user_id*
O que pode estar errado?
--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil"
dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele,
Para mais opções, acesse https://groups.google.com/d/optout.
--
Rafael dos Santos Gonçalves
Ramal - 6757
--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil"
dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie
Para mais opções, acesse https://groups.google.com/d/optout.
--
Rafael dos Santos Gonçalves
Ramal - 6757
--
Você está recebendo esta mensagem porque se inscreveu no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasil+***@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/d/optout.
Dennis Alves
2016-11-13 20:06:19 UTC
Permalink
Olá, boa tarde, tudo bem?

pelo que vi, você está passando o parâmetro "date" na linha:
filters = {'date__year': year, 'date__month': month}

mas o mesmo não existe na definição no campo "fields" da classe "Meta":
class Meta:
model = Booking
fields = ('user', 'title', 'start', 'end','created_on', 'authorized')

tenta ou adicionar o campo "date" no meta da class ou então utiliza algum
dos parâmetros disponíveis.

abraços.
Post by Elias Coutinho
Boa tarde pessoal,
Estava assistindo o vídeo de um colega
http://youtu.be/PwskBz5re4Q
E por sinal está muito bom.
O problema aparece depois que eu tentei adicionar campos e editar outros.
user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=
'usuário')
title = models.CharField('evento', max_length=128)
start = models.DateField('inicio')
end = models.DateField('fim')
created_on = models.DateTimeField('solicitado em', default=timezone.
now)
authorized = models.BooleanField('autorizado', default=False)
verbose_name = 'reserva'
verbose_name_plural = 'reservas'
ordering = ('-start',)
return self.event
from django.contrib.auth.models import User
from rest_framework import serializers
from vitrinebela.bookings.models import Booking
user = serializers.PrimaryKeyRelatedField(
read_only=False,
queryset=User.objects.all()
)
model = Booking
fields = ('user', 'title', 'start', 'end','created_on',
'authorized')
selected_date = date.today()
return list_date(request, selected_date.year, selected_date.month)
selected_date = date(int(year), int(month), 1)
raise Http404
context = {
'selected_date': selected_date,
'calendar': tuple(_calendar(selected_date)),
'next': selected_date + timedelta(days=31),
'previous': selected_date - timedelta(days=1)
}
return render(request, 'bookings/bookings_list.html', context)
year, month = selected_date.year, selected_date.month
filters = {'date__year': year, 'date__month': month}
bookings = {b.date: b for b in Booking.objects.filter(**filters)}
calendar = Calendar(firstweekday=6)
yield [(day, bookings.get(day)) for day in week]
*"Choices are: %s" % (name, ", ".join(available)))
django.core.exceptions.FieldError: Cannot resolve keyword 'date' intofield.
Choices are: authorized, created_on, end, id, start, title, user, user_id*
O que pode estar errado?
--
Você está recebendo esta mensagem porque se inscreveu no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasil+***@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/d/optout.
Loading...