django - 多对多关系上的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 关系的误解。
解决方案
推荐阅读
- python - 在列表中查找表达式的答案
- ruby-on-rails - 使 rufus-scheduler 作业在服务器重新启动后持续存在
- java - 扫描仪类如何用于字符串“1 a 10 . 100 sfn 1000”
- javascript - C# MVC 使用带有参数的 javascript 加载 ActionResult
- java - spring mongo 聚合过滤器
- html - HTML 视频自动播放不起作用
- command-line-arguments - 带参数的 CLion 快速运行
- java - 为什么Java对象分配在堆中?
- java - 计算当前日期和过去日期之间的差异
- sqlite - SQLite 从具有多个条件的内部连接创建视图