尝试运行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。我在发布之前花了一些时间检查。所以如果这是一个粗心的错误,请求你的原谅)
修改:
好的我删除了表并重新使用南创建表。现在工作正常,但知道前一种方法出了什么问题仍然很好。
答案 0 :(得分:0)
我认为你的两个模型来自不同的应用程序。
docs说:
要引用另一个应用程序中定义的模型,您可以使用完整的应用程序标签显式指定模型。例如,如果上面的制造商模型在另一个名为production的应用程序中定义,则需要使用:
所以你的foreignkeyfield会是这样的:
tsc = models.ForeignKey('customUsers.TeachSubject')
这也意味着您不必从其他应用程序导入模型(也解决了循环导入的问题。
看起来很奇怪你没有得到任何错误 - 只是一无所获 - 但尝试一下,它可能会起作用。