2013-06-24 43 views
1

定義一個多對多場在我的Django應用程序,我有以下models.py:如何正確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/。我能夠在沒有問題添加主機(從管理頁面),但是當我試圖在作業添加我得到了以下錯誤:

Exception at /admin/Minion/job/add 
<class 'Minion.models.Host'> has no ForeignKey to <class 'Minion.models.Job'> 

,我打算給ManyToManyField任務添加到作業類作爲但它告訴我,Host的名字是未定義的。有誰知道我能做些什麼來使這個領域正常工作?預先感謝您的幫助。

+0

你有以前定義的一個ForeignKey從主機到工作? – dablak

回答

1

您需要admin.py

檢查the documentation申報inlinesManyToMany對於如何聲明內聯

事情是這樣的:

class JobInline(admin.TabularInline): 
    model = Host.jobs.through 
+1

謝謝你的幫助。 – avorum