刚开始使用 Django。我正在尝试创建一个名为“average”的自定义 manage.py,其功能是计算 Review 模型中每个字段的平均值并在“AvgMarks”模型中更新它。
型号是:
class AvgMarks(models.Model):
collegeId = models.ForeignKey(College)
overall = models.FloatField()
academics = models.FloatField()
sports = models.FloatField()
class Reviews(models.Model):
collegeId = models.ForeignKey(College)
dateAdded = models.DateField(default=timezone.now())
authorName = models.CharField(max_length=25)
authorEmail = models.EmailField(max_length=100)
authorYear = models.IntegerField()
authorCourse = models.CharField(max_length=50)
category = models.CharField(max_length=20, choices=CATEGORIES)
marks = models.FloatField(default="1.00")
review = models.TextField()
def __str__(self):
return self.authorName
manage.py 的“average.py”内容为:
from django.core.management.base import BaseCommand, CommandError
from django.db.models import Avg
from college.models import AvgMarks, College
from reviews.models import Reviews
class Command(BaseCommand):
help = "Calculates and save the average for a particular field"
def handle(self, *args, **options):
colleges = College.objects.all()
for i in colleges:
AvgMarks.objects.filter(collegeId=i).update(
overall = Reviews.objects.filter(collegeId=i).aggregate(Avg('marks'))['marks__avg'],
academics = Reviews.objects.filter(collegeId=i, category="Academics").aggregate(Avg('marks'))['marks__avg'],
sports = Reviews.objects.filter(collegeId=i, category="Sports").aggregate(Avg('marks'))['marks__avg'],
)
self.stdout.write("Averages done!")
在 Windows Powershell 中运行“python manage.py average”命令时,出现以下错误:django.db.utils.IntegrityError:college_avgmarks.overall may not be NULL
我如何解决它?TIA