如何在 models.py 文件中正确定义 ManyToMany 字段
Posted
技术标签:
【中文标题】如何在 models.py 文件中正确定义 ManyToMany 字段【英文标题】:how to properly define a ManyToMany field in the models.py file 【发布时间】:2013-06-21 02:17:25 【问题描述】:在我的 Django 应用中,我有以下 models.py:
from django.db import models
import datetime
class Job(models.Model):
name = models.CharField(max_length = 250, null = False)
user = models.CharField(max_length = 30, null = False)
command = models.CharField(max_length = 1000, null = False)
whenToRun = models.DateTimeField('Run Date', null = False)
output = models.CharField(max_length = 100000, null = True)
class Host(models.Model):
jobs = models.ManyToManyField(Job, blank = True)
name = models.CharField(max_length = 100, null = False)
hasRun = models.BooleanField(default = False)
在 https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_many/ 的指导下,我在 Host 类中添加了作业分配。我能够毫无问题地添加主机(从管理页面),但是当我尝试添加作业时,出现以下错误:
Exception at /admin/Minion/job/add
<class 'Minion.models.Host'> has no ForeignKey to <class 'Minion.models.Job'>
我也尝试将 ManyToManyField 分配添加到 Job 类,但它告诉我名称 Host 未定义。有谁知道我可以做些什么来使这个领域正常运作?提前感谢您的帮助。
【问题讨论】:
您之前是否定义了从 Host 到 Job 的 ForeignKey? 【参考方案1】:您需要在admin.py
中为ManyToMany
声明inlines
查看the documentation 了解如何声明内联
类似这样的:
class JobInline(admin.TabularInline):
model = Host.jobs.through
【讨论】:
以上是关于如何在 models.py 文件中正确定义 ManyToMany 字段的主要内容,如果未能解决你的问题,请参考以下文章
如何在struct中正确定义一个函数指针,它以struct为指针?