Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

651
Vistas
Base de datos MongoDB. Error "Seleccione una opción válida. Esa opción no es una de las opciones disponibles".

He instalado MongoDB en mi proyecto Django. Como es la primera vez que uso Mongo, decidí probar cómo funciona y creé un programa simple para almacenar datos (precio y cantidad en mi caso). El proyecto se llama "intercambio" y tiene 2 carpetas: intercambio y aplicación.

Este es el archivo models.py de la carpeta 'app':

 from django.db import models from djongo.models.fields import ObjectIdField, Field from django.contrib.auth.models import User class Profile(models.Model): _id = ObjectIdField() user = models.ForeignKey(User, on_delete=models.CASCADE) class Order(models.Model): _id = ObjectIdField() profile = models.ForeignKey(Profile, on_delete=models.CASCADE) datetime = models.DateTimeField(auto_now_add=True) price = models.FloatField() quantity = models.FloatField() #ips = models.Field(default=[]) #subprofiles = models.Field(default={})

Este es el archivo admin.py

 from django.contrib import admin from .models import * admin.site.register(Profile) admin.site.register(Order)

Así configuro la base de datos en el archivo settings.py de la carpeta de intercambio

 DATABASES = { 'default': { 'ENGINE': 'djongo', 'NAME': 'engine', } }

Entonces, después de hacer las migraciones y crear el superusuario, ejecuté el servidor, entré en la sección Admin que en Perfil, y creé un perfil eligiendo la única opción disponible (mi superusuario). En este punto creé un pedido en la sección Pedidos: así que elegí en el campo "perfil" la única opción disponible (el perfil creado antes), luego llené los otros 2 campos (precio y cantidad), pero cuando intento guardarlo, aparece encima del campo "perfil" el siguiente error:

"Seleccione una opción válida. Esa opción no es una de las opciones disponibles".

No puedo entender dónde me equivoco.

¡Gracias de antemano por tu ayuda!

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

El problema es que ForeignKey agrega por defecto _id al nombre de la propiedad. En su ejemplo anterior, está tratando de usar la propiedad user_id en Profile y profile_id en Order.

La solución es actualizar ForeignKey a:

 profile = models.ForeignKey(Profile, db_column='profile', on_delete=models.CASCADE)

Lo que cambie db_column a puede depender de cómo haya configurado su esquema dentro de mongodb, pero recibí este mismo error y db_column a la propiedad correcta, lo arreglé para mí.

over 4 years ago · Santiago Trujillo Denunciar

0

OMG @Adam Berg, he estado tratando de resolver este problema durante más de las últimas 4 horas. Su respuesta lo resolvió en minutos. Muchas gracias, su trabajo es muy apreciable.

 import datetime,os from djongo import models class test1(models.Model): name = models.CharField(max_length=100) class Profile(models.Model): user = models.ForeignKey(test1, db_column='user',on_delete=models.CASCADE)

Esto lo ayudará a realizar todas las consultas relacionadas con la clave externa.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda