Python 如何计算与表相关的对象并将其返回到模型字段

Python 如何计算与表相关的对象并将其返回到模型字段,python,django,django-models,Python,Django,Django Models,我想知道如何计算与某个教室相关的学生人数,并将当前数量放入一个字段,这样每当我向教室添加一个学生时,我就可以知道其中的当前学生人数 class Student(models.Model): ClassRoom = models.ForeignKey(ClassRoom) class ClassRoom(models.Mode): qtt_current_students = ------编辑--------- 我尝试了以下方法,但qtt_当前的学生

我想知道如何计算与某个教室相关的学生人数,并将当前数量放入一个字段,这样每当我向教室添加一个学生时,我就可以知道其中的当前学生人数

  class Student(models.Model):
        ClassRoom = models.ForeignKey(ClassRoom)


    class ClassRoom(models.Mode):
       qtt_current_students =
------编辑---------

我尝试了以下方法,但qtt_当前的学生没有得到 instance.教室.student\u set.count

每当我添加一个学生时,该字段就不会显示

@receiver(pre_save, sender=Student)
def Student_pre_save(sender, instance, **kwargs):
    instance.ClassRoom.qtt_current_students = instance.ClassRoom.student_set.count()

试试这个,

我试过这个,效果很好

@receiver(post_save, sender=Student)
def student_post_save(sender, instance, **kwargs):
    t = ClassRoom.objects.get(pk=instance.ClassRoom.pk)
    t.qtt_current_students = instance.ClassRoom.student_set.count()
    t.save()

@receiver(post_delete, sender=Student)
def student_post_delete(sender, instance, **kwargs):
    t = ClassRoom.objects.get(pk=instance.ClassRoom.pk)
    t.qtt_current_students = instance.ClassRoom.student_set.count()
    t.save()

你不会在野外这样做的。当您需要时,您可以使用.count或通过注释来查询它。请注意,如果您这样做,那么如果更改,学生人数将不会反映实际关系。它将只保留创建时的学生数量。这就是你想要的吗?另外,@DanielRoseman是正确的^No,我希望它是实时的,只要我添加一个学生,另一个表就会知道并计算它,但由于我做不到,我怎么能至少计算当前的数字?@Optimuscime我误解了你,如果用户被从教室中移除,我也想在字段中看到当前的数字。你可以使用一个信号来做到这一点,比如在post之后添加一个学生。保存它将更新课堂学生列,然后你可以得到该字段中最新的学生人数,但是你通常需要声明课堂模型你的答案不起作用,但是你的想法很重要,所以我可以找到解决办法,谢谢。
@receiver(post_save, sender=Student)
def student_post_save(sender, instance, **kwargs):
    t = ClassRoom.objects.get(pk=instance.ClassRoom.pk)
    t.qtt_current_students = instance.ClassRoom.student_set.count()
    t.save()

@receiver(post_delete, sender=Student)
def student_post_delete(sender, instance, **kwargs):
    t = ClassRoom.objects.get(pk=instance.ClassRoom.pk)
    t.qtt_current_students = instance.ClassRoom.student_set.count()
    t.save()