Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在django模型的___________________________________Django_Python 3.x_Django Models - Fatal编程技术网

在django模型的__________________________________

在django模型的__________________________________,django,python-3.x,django-models,Django,Python 3.x,Django Models,在Django模型的str方法中,我试图引用一个是ManyToManyField的字段 class Level(models.Model): code = models.CharField(max_length=10) name = models.CharField(max_length=60) def __str__(self): return self.code class Excercise(model

在Django模型的str方法中,我试图引用一个是ManyToManyField的字段

class Level(models.Model):
    code            = models.CharField(max_length=10)
    name            = models.CharField(max_length=60)

    def __str__(self):
        return self.code

class Excercise(models.Model):
    title           = models.CharField(max_length=100, unique=True)
    level           = models.ManyToManyField(Level)

    def __str__(self):
        return self.level.code + ') ' + self.title[:20]
代码的最后一行

返回self.level.code+')'+self.title[:20]

生成错误:“ManyRelatedManager”对象没有属性“code”。 我使用Python 3.6和Django 2.2.2,您可以这样做:

class Excercise(models.Model):
    title           = models.CharField(max_length=100, unique=True)
    level           = models.ManyToManyField(Level)

    def __str__(self):
        return '({}) {}'.format(', '.join(self.level.all().values_list('code', flat=True)), self.title[:20])
    def __str__(self):
        elevel = self.level.all().first()
        if elevel:
           return elevel.code + ')' + self.title[:20]
        return self.title[:20]
因为,您可以使用
.all()
访问级别对象

或者,如果只想访问第一个对象,请使用以下命令:

class Excercise(models.Model):
    title           = models.CharField(max_length=100, unique=True)
    level           = models.ManyToManyField(Level)

    def __str__(self):
        return '({}) {}'.format(', '.join(self.level.all().values_list('code', flat=True)), self.title[:20])
    def __str__(self):
        elevel = self.level.all().first()
        if elevel:
           return elevel.code + ')' + self.title[:20]
        return self.title[:20]
有关多用途的更多信息,请查看