Soy nuevo en Django y estoy tratando de descubrir muchas relaciones.
Tengo un modelo de palabra que tiene una relación de muchos a muchos con el modelo de usuario predeterminado:
from django.db import models from django.contrib.auth.models import User class Word(models.Model): definition = models.CharField(max_length=350) turkish = models.CharField(max_length=50) english = models.CharField(max_length=50) users = models.ManyToManyField(User) def __str__(self): return self.english def summary(self): return self.definition[:50] + "..."Tengo un objeto de palabra de ejemplo que pertenece a dos usuarios y quiero que solo estos dos usuarios vean este objeto de palabra en su página de noticias. ¿Cómo debo corregir la función de vista a continuación?
from django.shortcuts import render from django.contrib.auth.models import User @login_required def home(request): user = request.user small = user.username.title() words = Word.objects.filter(??????) #order_by('-english') return render(request, 'intro.html', {'words': words, 'small' : small})Básicamente, quiero verificar si la lista de usuarios de un objeto de palabra contiene un usuario autorizado y, si lo contiene, la palabra se tomará de la base de datos. ¿Cómo puedo codificar esto?
Creo que deberías ser capaz de hacer
words = Word.objects.filter(users=user)Y para verificar varios usuarios, podría hacer cosas como
words = Word.objects.filter(users__in=[user1,user2])Eche un vistazo a los documentos para ver ejemplos.