我的Django代码在model.py部分中出现错误

时间:2018-08-13 15:56:18

标签: python django module django-cms

我正在学习用Django制作模型。但是,当我尝试进行迁移时,由于所有者部分在第一堂课的get_full_name中以及在电影课的返回中都有错误,我会收到一条错误消息。

出现的错误如下:在第23,20行之间,ForeignKey没有get_full_name成员,并且rate_count的两个rate都不是定义的变量。我将代码留在这里。

`from django.db import models

from django.contrib.auth import get_user_model

from django.core.validators import MaxValueValidator

User= get_user_model()`

class MoveList(models.Model):
    #modelo de lista para ver
    name= models.CharField('Nombre de la Lista', max_length=50, unique=True)
    owner = models.ForeignKey(User)
    movies = models.ManyToManyField('movies.Movie')


    def __str__(self):
        return "'{list}' de {owner}".format(
            list =self.name,
            owner =self.owner.get_full_name()
        )

class Movie(models.Model):
    #Modelo de peliculas
    name= models.CharField('Nombre de la pelicula',max_length=100)
    release_date = models.DateField('Fecha de estreno')
    rate = models.PositiveIntegerField('Total de claificaciones de la pelicula',blank=True, null=True)
    rate_count = models.PositiveIntegerField('Veces que se ha calificado a la pelicula',blank=True)
    tags = models.ManyToManyField('movies.Tag')
    studio = models.ForeignKey ('movies.Studio',on_delete=models.SET_NULL, null=True)
    director =models.ForeignKey('movies.Director',on_delete=models.SET_NULL, null=True)

    def average_rate(self):
        """"devuelve la calificación"""

        if self.rate_count == 0:
            return 0
        else:
            return rate/rate_count

    def __str__(self):
        return self.name

2 个答案:

答案 0 :(得分:0)

这里实际上有两个问题。

第二个问题,替换为:

return rate/rate_count

作者:

return self.rate/self.rate_count

答案 1 :(得分:0)

您是否考虑过使用@property装饰器将“ average_rate”设置为属性?如果您打算在模板中使用此计算所得的属性(并且不需要添加任何参数),则建议这样做。

您似乎使用的是rate和rate_count,而没有“自我”。访问器,这就是为什么它们显示为未命名的原因。

@property
def average_rate(self):
    """"devuelve la calificación"""

    if self.rate_count == 0:
        return 0
    else:
        return self.rate/self.rate_count

关于“ get_full_name”,不确定为什么它不能正常工作。听起来好像是在获取模型字段类,而不是实例及其值。