2011-07-31 31 views
0

尝试运行syncdb时遇到问题。我的模型:使用syncdb的django问题

class TeachSubject(models.Model): 
    teacher = models.ForeignKey(User) 
    taught_class = models.ForeignKey(SchoolClass) 
    subject = models.ForeignKey(Subject) 
    year = models.IntegerField(default=datetime.date.today().year) 
    semester = models.IntegerField() 

    #class Meta: 
     #db_table = 'subject_teachers' 

另一个文件:

from customUsers.models import TeachSubject 

class SubjectPeriod(models.Model): 
    days = ((1, 'Mon'), 
      (2, 'Tues'), 
      (3, 'Wed'), 
      (4,'Thurs'), 
      (5,'Friday')) 
    tsc = models.ForeignKey(TeachSubject) 
    day = models.IntegerField(choices = days) 
    period = models.IntegerField() 

    class Meta: 
     db_table = 'subject_period' 
     unique_together = ('day', 'period', 'tsc') 

试图运行执行syncdb,创建表subject_period好吗。问题是,在检查数据库本身之后,奇怪的是没有为行tsc = models.ForeignKey(TeachSubject)创建外键约束。

任何人都可以摆脱一些光?使用Django 1.2.4(PS。我花了一些时间在这里发帖之前检查所以,我求你原谅,如果它是一个无心之失。)

编辑

确定我删除的表和重试创建使用南而不是表。现在可以正常工作,但是知道前一种方法出了什么问题还是很好的。

回答

0

我假设你的两个模型来自不同的应用程序。

docs说:

要引用另一个应用程序定义的模型,你可以明确指定完整的应用标签的模型。例如,如果制造商模型上面在另一个应用程序称为生产的定义,你需要使用:

所以你foreignkeyfield看起来像:

tsc = models.ForeignKey('customUsers.TeachSubject') 

这也意味着你不必从其他应用程序(也解决圆形进口的问题进口车型

,你不得到一个错误,这似乎很奇怪 - 只是什么都没有 - 但尝试,它可能只是工作

+0

我必须错过了。这在文档中。无论如何,已经修复了我使用南方。无论如何感谢您的启发 – goh