¿Hay alguna manera de decirle a django que un modelo que tenga un tipo de contenido GenericForeignKey solo puede apuntar a modelos de una lista predefinida? Por ejemplo, tengo 4 modelos: A, B, C, D y un modelo X que contiene un GenericForeignKey. ¿Puedo decirle a X que solo A & B están permitidos para GenericForeignKey?¿Cómo puedo restringir GenericForeignKey de Django a una lista de modelos?
49
A
Respuesta
93
Por ejemplo, sus aplicaciones son aplicación y aplicación2 y hay modelos A, B en la aplicación y hay modelos C, D en la aplicación2. desea ver solamente app.A y App.B y app2.C
class TaggedItem(models.Model):
tag = models.SlugField()
limit = models.Q(app_label = 'app', model = 'a') | models.Q(app_label = 'app', model = 'b') | models.Q(app_label = 'app2', model = 'c')
content_type = models.ForeignKey(ContentType, limit_choices_to = limit)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
uso limit_choices_to en ForeignKey.
revise django docs para obtener más información y objetos Q, app_label. necesita escribir la etiqueta_aplicación adecuada y el modelo. Esto es solo un fragmento de código
plus: Creo que escribes la etiqueta de la aplicación incorrecta. Esto puede ayudarte.
from django.contrib.contenttypes.models import ContentType
for c in ContentType.objects.all():
print(c.app_label, c.model)
Cuestiones relacionadas
- 1. Django tastypie y GenericForeignKey
- 2. django: objetos relacionados de recuperación previa de un GenericForeignKey
- 3. ¿Cómo puedo definir una relación polimórfica entre modelos en Django?
- 4. ¿Es posible usar una clave natural para GenericForeignKey en Django?
- 5. ¿Cómo eliminar modelos de django?
- 6. Django lista de modelos de ponerse en aplicación
- 7. Agregar modelos a la lista
- 8. ¿Cómo funcionan los modelos Django?
- 9. Modelos Django (1054, "Columna desconocida en 'lista de campos'")
- 10. Django: ¿Cómo puedo encontrar cuál de mis modelos se refiere a un modelo?
- 11. Django: ¿Cómo puedo ver una lista de patrones Url?
- 12. django: ¿cómo hago una consulta basada en los campos de GenericForeignKey?
- 13. modelos de Django importaciones recursivas - cómo resolver
- 14. Lista de modelos de concurrencia
- 15. Usando django ¿cómo puedo combinar dos consultas de modelos separados en una consulta?
- 16. ¿Puedo restringir el método genérico a más de una interfaz?
- 17. Django filtrado de administración de lista de cambios/enlace a otros modelos
- 18. modelos de Django evitar duplicados
- 19. modelos de Django y Python
- 20. Neo4j y django modelos
- 21. Django - Manejo de "modelos enum"
- 22. Generar objetos de JavaScript de Django Modelos
- 23. Django pasar múltiples modelos para una plantilla
- 24. ¿Cómo puedo restringir las opciones claves ajenas a objetos relacionados sólo en Django
- 25. Django modelos, funciones personalizadas
- 26. ¿Cómo restringir a una llamada de método a la vez?
- 27. Prueba Django modelos con FileField
- 28. get_models Django con modelos/__ init.py__
- 29. Orden de definición de modelos Django
- 30. Django: Representación de cadena de los modelos
Pero, la interfaz de administración no parece usar esto, para su campo de elección. ¿Porqué es eso? – Geo
Lo comprobé por el lado de administración y funciona con el administrador predeterminado, como se esperaba. tal vez hiciste algún pequeño error tipográfico allí. No sé tu problema. – mumino
En mi administrador, después de agregar su límite, las opciones de la selección de GenericForeignKey desaparecen. Solo me queda "---". ¿Podría publicar una captura de pantalla con las elecciones de selección de su administrador? – Geo