Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

656
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!