Relación de Django ManyToManyField

Tengo el siguiente modelo de Django:

class opetest(models.Model):
    name = models.CharField(max_length=200)
    people = models.ManyToManyField(User, blank=True)

Esta relación m2m está disponible en el objeto Usuario como 'opetest_set'. ¿Cómo puedo hacer que esté disponible para editar esta relación m2m en la 'página de edición de usuario' del administrador de django?

preguntado el 08 de noviembre de 11 a las 10:11

1 Respuestas

Para editar m2m en el uso de administrador de Django InlineModelAdmin. Para usar el tuyo UserAdmin deberías darte de baja User primero, así:

admin.site.unregister(User)
admin.site.register(User, UserAdmin)

Para hacer opetest accesible desde User ejemplo:

class opetest(models.Model):
    name = models.CharField(max_length=200)
    people = models.ManyToManyField(User, blank=True, related_name='opetests')

Entonces user.opetests.all()

respondido 08 nov., 11:14

He declarado el campo m2m solo en el modelo opetest, pero no extiendo el modelo de usuario. Entonces, ¿cómo puedo acceder a esta relación m2m a través del modelo de usuario? - bebé

>>> de django.contrib.auth.models import User >>> a = User >>> a.opetests.all () Traceback (última llamada más reciente): Archivo " ", línea 1, en AttributeError: El objeto 'ManyRelatedObjectsDescriptor' no tiene ningún atributo 'all' No funciona. - bebé

@baobee ¿Dónde a ¿viene de? Lo es User ¿ejemplo? O solo estas asando User clase a eso? - DrTyrsa

fue mi error. Pero también obtengo un error: >>> a = User.objects.filter (username = 'admin') >>> a.opetests.all () Traceback (última llamada más reciente): Archivo " ", línea 1, en AttributeError: el objeto 'QuerySet' no tiene el atributo 'opetests' - bebé

@baobee a = User.objects.get(username='admin') - DrTyrsa

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.