Почему я получаю core.Model.none? - PullRequest
       38

Почему я получаю core.Model.none?

0 голосов
/ 24 октября 2018

Я работаю над бэкэндом на основе django.

У меня есть Submentor модель.Эта модель будет иметь список из имен , связанный с ней.Итак, я сделал модель под названием Список .они оба имеют отношения manytoMany .Теперь я сделал еще одну модель под названием names .Это имеет отношение ManytoMany и Список .В списке будет много имен.Каждый Субментор будет иметь один Список каждый.

После кодирования, когда я пытаюсь добавить значение в Список из консоли администратора, я получаю core.Name.none вместоимя в моем списке субменторов.

Что я делаю не так?

код моделей: -

class Names(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE,blank=True,null=True)
    name = models.CharField(max_length=50)

    def __str__(self):
        return self.name

class SAccepted_list(models.Model):
    saccepted_name = models.ManyToManyField(Names,blank =True, related_name='saccepted_name')

    def __str__(self):
        return str(self.saccepted_name)

class SPending_list(models.Model):
    spending_name = models.ManyToManyField(Names,blank =True, related_name='spending_name')

    def __str__(self):
        return str(self.spending_name)


class SRejected_list(models.Model):
    srejected_name = models.ManyToManyField(Names,blank =True, related_name='srejected_name')

    def __str__(self):
        return str(self.srejected_name)


class SubMentor(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
    mentee_pref_count = models.IntegerField(default=3, verbose_name='Preferred mentee count')
    rating = GenericRelation(Rating, related_query_name='Submentor')
    skills = models.ManyToManyField(Skill, blank=True, related_name='subskills')
    courses = models.ManyToManyField(Course, blank=True, related_name='subcourses')
    projects = models.ManyToManyField(Project, blank=True, related_name='subprojects')
    saccepted_list = models.ManyToManyField(SAccepted_list,blank=True,related_name='saccepted_list')
    spending_list = models.ManyToManyField(SPending_list, blank=True,related_name='spending_list')
    srejected_list = models.ManyToManyField(SRejected_list, blank=True,related_name='srejected_list')

    def __str__(self):
        return self.user.get_full_name()

    def get_mentee_count(self, *args, **kwargs):
        if self.trainees.exists():
            return self.trainees.count()
        else:
            return 0

class Accepted_list(models.Model):
    accepted_name = models.ManyToManyField(Names,blank =True, related_name='accepted_name')
    # saccepted_name = models.ManyToManyField(Names,blank =True, related_name='saccepted_name')

    def __str__(self):
        return str(self.accepted_name)

class Pending_list(models.Model):
    pending_name = models.ManyToManyField(Names,blank =True, related_name='pending_name')
    # spending_name = models.ManyToManyField(Names,blank =True, related_name='spending_name')

    def __str__(self):
        return str(self.pending_name)


class Rejected_list(models.Model):
    rejected_name = models.ManyToManyField(Names,blank =True, related_name='rejected_name')
    # srejected_name = models.ManyToManyField(Names,blank =True, related_name='srejected_name')

    def __str__(self):
        return str(self.rejected_name)



class Mentor(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
    score = models.FloatField(default=0, blank=True, null=True)
    mentee_pref_count = models.IntegerField(default=5, verbose_name='Preferred menteee count')
    rating = GenericRelation(Rating, related_query_name='mentor')
    skills = models.ManyToManyField(Skill, blank=True, related_name='skills')
    accepted_list = models.ManyToManyField(Accepted_list,blank=True,related_name='accepted_list')
    pending_list = models.ManyToManyField(Pending_list, blank=True,related_name='pending_list')
    rejected_list = models.ManyToManyField(Rejected_list, blank=True,related_name='rejected_list')

    def __str__(self):
        return self.user.get_full_name()

    def get_mentee_count(self, *args, **kwargs):
        if self.trainees.exists():
            return self.trainees.count()
        else:
            return 0

картина добавления именнапрямую через консоль администратора: -

See where core.Names.none is written

Спасибо.

1 Ответ

0 голосов
/ 25 октября 2018

Хорошо, я решил свою проблему.Это было неправильно с моей стороны в первую очередь использовать m2m, а затем другое, чтобы составить список.Вместо этого я использовал только 1 м2 отношения со списками, а затем сделал их собственностью Чарфилда.Теперь он работает правильно.

Спасибо:)

...