首页 > 解决方案 > 多对多关系上的Django makemigrations错误

问题描述

我想要的是:

存储有关人群运行的信息。

我做了什么:

from django.db import models
from django.contrib.auth.models import User
from datetime import timedelta


class Route(models.Model):
    name = models.CharField(max_length=50)


class Run(models.Model):
    date = models.DateField()
    type = models.ForeignKey(Route, on_delete=models.PROTECT)
    runners = models.ManyToManyField(User, through='RunnerResult', through_fields=["user", "run"])


class RunnerResult(models.Model):
    user = models.ForeignKey(User, on_delete=models.PROTECT)
    run = models.ForeignKey('Run', on_delete=models.PROTECT)
    result = models.DurationField(default=timedelta())

问题:

当我这样做时makemigrations,出现以下错误:

SystemCheckError: System check identified some issues:

ERRORS:
run.Run.runners: (fields.E339) 'RunnerResult.run' is not a foreign key to 'User'.
        HINT: Did you mean one of the following foreign keys to 'User': user?
run.Run.runners: (fields.E339) 'RunnerResult.user' is not a foreign key to 'Run'.
        HINT: Did you mean one of the following foreign keys to 'Run': run?

试图在彼此之间以及其他一些操作之间交换 through_fields 和模型。我开始思考我对 M2M 关系的误解。

标签: djangodjango-modelsormm2mdbm

解决方案



推荐阅读