Ошибка создания менеджера пользовательских моделей Django

Я пытаюсь создать модель для веб-сайта Django, над которым я работаю, и у меня есть все поля, как вы можете видеть в приведенной ниже модели обзоров. Теперь я прочитал, как реализовать собственный менеджер моделей и по какой-либо причине для строки кода: "object = ReviewsManager", django выдает ошибку, говоря, что это неопределенная переменная. Все примеры, которые я видел, делают то же самое, но они, очевидно, работают просто отлично, есть идеи, что происходит? Чтобы было ясно, я импортировал все, что нужно импортировать уже, так что я знаю, что это не проблема. В качестве примечания следует упомянуть, что я использую django 1.6, на случай, если это имеет значение

//This is the model itself
class Reviews(models.Model):
    mentor_id = models.IntegerField(default=0, unique=False);
    review_id = models.IntegerField(default=0, unique=False);
    title = models.CharField(max_length=200);
    content = models.CharField(max_length=200);
    stars = models.DecimalField(max_digits=1, decimal_places=1);
    ----> object = ReviewsManager

//Trying to use this manager below
---> class ReviewsManager(models.Manager):    

    def getReviewsByMentorId(self, id):
       r = Reviews.objects.filter(mentor_id=id);
       return r;

2 ответа

Есть несколько вопросов:

  • Вы пытаетесь использовать ReviewsManager класс, прежде чем он будет определен. Переместите определение класса вверх, чтобы оно было выше вашего Review или переместите его в отдельный файл и импортируйте этот файл перед использованием класса.

  • Вы не создаете экземпляр своего класса менеджера. После того, как вы решили первую проблему, это вызовет еще одну ошибку. использование objects = ReviewsManager() вместо.

  • Как сказал Прашант, это должно быть objectsне object

Пожалуйста измените

----> object = ReviewsManager

в

----> objects = ReviewsManager()        ## вы должны использовать объекты

Код должен быть таким:

Отзывы о классе (модели. Модель):
    mentor_id = models.IntegerField(по умолчанию =0, уникальный =False);
    review_id = models.IntegerField(по умолчанию =0, уникальный =False);
    title = models.CharField(max_length=200);
    content = models.CharField(max_length=200);
    stars = models.DecimalField(max_digits=1, decimal_places=1);
    objects = ReviewsManager()

class ReviewsManager(models.Manager): def getReviewsByMentorId(self, id): r = Reviews.objects.filter(mentor_id=id); return r;
Другие вопросы по тегам