【问题标题】:django problem using syncdb使用syncdb的django问题
【发布时间】:2011-07-31 11:17:03
【问题描述】:

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

编辑

好的,我删除了表格并尝试使用 south 创建表格。现在可以正常工作,但最好知道前一种方法出了什么问题。

【问题讨论】:

    标签: django django-models


    【解决方案1】:

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

    docs 说:

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

    所以你的外键字段看起来像:

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

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

    您没有收到错误似乎很奇怪 - 什么也没有 - 但尝试一下,它可能会起作用。

    【讨论】:

    • 我一定在文档中错过了这个。无论如何,已经使用南解决了这个问题。无论如何感谢您的启发
    猜你喜欢
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    相关资源
    最近更新 更多