2 votes

"'ReverseManyToOneDescriptor' n'a pas d'attribut 'all'".

J'ai trouvé la réponse moi-même, mais j'ai pensé que cette question pourrait profiter à d'autres :

J'ai obtenu l'erreur suivante à chaque fois que j'ai appelé :

Schema.objects.all() 

ou

Schema.objects.filter(url=some_url)

ou similaire..

Erreur : "L'objet 'ReverseManyToOneDescriptor' n'a pas d'attribut 'all'".

class Schema(models.Model):

    label = models.TextField()
    description = models.TextField()
    url = models.URLField(unique=True)

    def __str__(self):
        return self.label

    class Meta:
        app_label = 'metadata'

class Object(models.Model):
    label = models.TextField()
    description = models.TextField()
    # related name should not be objects, because that will cause problems
    schema = models.ForeignKey(
        Schema, related_name='objects', on_delete=models.CASCADE)

    def __str__(self):
        return "%s.%s" % (self.schema.label, self.label)

    class Meta:
        app_label = 'metadata'

3voto

William Points 91

Le problème est que le related_name ne peut pas être "objects", cela entre en conflit avec le Schema.objects

donc en renommant le related_name comme :

class Object(models.Model):
    label = models.TextField()
    description = models.TextField()
    # related name should not be objects, because that will cause problems
    schema = models.ForeignKey(
        Schema, related_name='object_list', on_delete=models.CASCADE)

    def __str__(self):
        return "%s.%s" % (self.schema.label, self.label)

    class Meta:
        app_label = 'metadata'

a résolu le problème pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X