使用syncdb的django问题

时间:2011-07-31 11:17:03

标签: django django-models

尝试运行syncdb时遇到问题。我的模特:

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。我在发布之前花了一些时间检查。所以如果这是一个粗心的错误,请求你的原谅)

修改

好的我删除了表并重新使用南创建表。现在工作正常,但知道前一种方法出了什么问题仍然很好。

1 个答案:

答案 0 :(得分:0)

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

docs说:

要引用另一个应用程序中定义的模型,您可以使用完整的应用程序标签显式指定模型。例如,如果上面的制造商模型在另一个名为production的应用程序中定义,则需要使用:

所以你的foreignkeyfield会是这样的:

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

这也意味着您不必从其他应用程序导入模型(也解决了循环导入的问题。

看起来很奇怪你没有得到任何错误 - 只是一无所获 - 但尝试一下,它可能会起作用。