我正在学习用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
答案 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”,不确定为什么它不能正常工作。听起来好像是在获取模型字段类,而不是实例及其值。