python - ejemplos - La clase no tiene ningún miembro de objetos
django (11)
¿Qué hay de suprimir errores en cada línea específica de cada error?
Algo así: https://pylint.readthedocs.io/en/latest/user_guide/message-control.html
Error: [pylint] La clase ''class_name'' no tiene miembro ''member_name''. Puede suprimirse en esa línea mediante:
# pylint: disable=no-member
def index(request):
latest_question_list = Question.objects.all().order_by(''-pub_date'')[:5]
template = loader.get_template(''polls/index.html'')
context = {''latest_question_list'':latest_question_list}
return HttpResponse(template.render(context, request))
La primera línea de esa función obtiene un error en Question.objects.all () -> E1101: la clase ''Pregunta
has no objects
miembro miembro''
Estoy siguiendo el tutorial de documentación de Django y tienen el mismo código en funcionamiento.
He intentado llamar a una instancia.
Question = new Question()
and using MyModel.objects.all()
También mi código models.py para esa clase es este ...
class Question(models.Model):
question_text = models.CharField(max_length = 200)
pub_date = models.DateTimeField(''date published'')
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
def __str__(self):
return self.question_text
En vano todavía tengo este error.
He leído sobre pylint y ejecuté esto ...
pylint --load-plugins pylint_django
Lo que no ayudó, incluso aunque el archivo readme de github dice ...
Evita advertencias sobre atributos generados por Django como Model.objects o Views.request.
Ejecuté el comando dentro de mi virtualenv, y sin embargo nada.
Por lo que cualquier ayuda sería grande
@ tieuminh2510 la respuesta es perfecta. Pero en las versiones más recientes de VSC no encontrará la opción para editar o pegar ese comando en la Configuración del usuario . Ahora, en la versión más nueva para agregar ese código, siga estos pasos :
Presione ctr + sft + P para abrir la Paleta de comandos . Ahora en la paleta de comandos, escriba Preferencias: Configurar opciones específicas de idioma . Ahora seleccione Python . Aquí en el lado derecho pegue este código
"python.linting.pylintArgs": [
"--load-plugins=pylint_django",
]
Dentro de las primeras llaves. Asegúrese de que pylint-django .
Espero que esto ayude!
Al hacer
Question = new Question()
(supongo que lo
new
es un error tipográfico), está sobrescribiendo el modelo de Pregunta con una frase intacta.
Como dijo Sayse en los comentarios: no use el mismo nombre para su variable que el nombre del modelo.
Entonces cámbielo a algo como
my_question = Question()
.
Aquí está la respuesta. Obtenido de mi publicación en reddit ... https://www.reddit.com/r/django/comments/6nq0bq/class_question_has_no_objects_member/
Eso no es un error, es solo una advertencia de VSC. Django agrega esa propiedad dinámicamente a todas las clases de modelos (usa mucha magia bajo el capó), por lo que el IDE no lo sabe al mirar la declaración de clase, por lo que le advierte sobre un posible error (no lo es). objetos es, de hecho, una instancia de Manager que ayuda a consultar la base de datos. Si realmente desea deshacerse de esa advertencia, puede ir a todos sus modelos y agregar objetos = models.Manager () Ahora, VSC verá los objetos declarados y no volverá a quejarse.
Cambie su linter a - flake8 y el problema desaparecerá.
He probado todas las posibles soluciones ofrecidas, pero desafortunadamente mi configuración de vscode no cambiará su ruta de linter. Por lo tanto, me gustaría explorar la configuración de vscode en configuración> Configuración de usuario> python . Busque Linting: Pylint Path y cámbielo a "pylint_django". No olvide cambiar el linter a "pylint_django" en configuración> Configuración de usuario> configuración de python de "pyLint" a "pylint_django".
Instale
pylint-django
usando
pip
siguiente manera
pip install pylint-django
Luego, en Visual Studio Code, vaya a: Configuración de usuario ( Ctrl + o Archivo> Preferencias> Configuración, si está disponible) Ponga lo siguiente (tenga en cuenta las llaves que se requieren para la configuración personalizada del usuario en VSC):
{"python.linting.pylintArgs": [
"--load-plugins=pylint_django"
],}
Primero instale pylint-django usando el siguiente comando
$ pip install pylint-django
Luego ejecute el segundo comando de la siguiente manera:
$ pylint test_file.py --load-plugins pylint_django
--load-plugins pylint_django es necesario para revisar correctamente un código de django
Puede cambiar el linter para la extensión Python para Visual Studio Code.
En VS, abra la Paleta de comandos Ctrl + Shift + P y escriba uno de los siguientes comandos:
Python: Seleccione Linter
cuando selecciona un linter, se instalará. Intenté flake8 y parece que el problema se resolvió para mí.
Si usas Python 3
python3 -m pip install pylint-django
Si python> 3
python -m pip install pylint-django
Simplemente agregue a lo que @ Mallory-Erik dijo: puede colocar
objects = models.Manager()
en los modales:
class Question(models.Model):
# ...
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
# ...
def __str__(self):
return self.question_text
question_text = models.CharField(max_length = 200)
pub_date = models.DateTimeField(''date published'')
objects = models.Manager()