Django unique_together не разрешает использование поля ForeignKey в приложениях при выполнении syncdb - PullRequest
1 голос
/ 08 декабря 2010

Я пытаюсь создать уникальное ограничение для моей TranslationRequest модели, указанной ниже.TranslationRequest имеет отношение внешнего ключа с моделью MachineTranslator, которая существует в другом приложении Django.Когда я пытаюсь запустить syncdb, я получаю сообщение об ошибке: Error: One or more models did not validate: wt_articles.translationrequest: "unique_together" refers to translator, a field that doesn't exist. Check your syntax.

Когда я удаляю translator из спецификации unique_constraint, syncdb работает правильно.Примечание: я использую Sqlite3 в качестве своей внутренней базы данных.

Вот определения TranslationRequest и SourceArticle.

from wt_translation.models import MachineTranslator

class TranslationRequest(models.Model):
    article = models.ForeignKey(SourceArticle)
    target_language = models.ForeignKey(Language, db_index=True)
    date = models.DateTimeField(_('Request Date'))
    translator = models.ForeignKey(MachineTranslator),
    status = models.CharField(_('Request Status'),
                              max_length=32,
                              choices=TRANSLATION_STATUSES)

    class Meta:
        unique_together = ("article", "target_language", "translator")

class SourceArticle(models.Model):
    title = models.CharField(_('Title'), max_length=255)
    language = models.ForeignKey(Language, db_index=True)
    timestamp = models.DateTimeField(_('Import Date'), default=datetime.now())
    doc_id = models.CharField(_('Document ID'), max_length=512)
    source_text = models.TextField(_('Source Text'))
    sentences_processed = models.BooleanField(_('Sentences Processed'))

Вот определение MachineTranslatorв другом (но упоминаемом приложении Django).

class MachineTranslator(models.Model):
    shortname = models.CharField(_('Name'), max_length=50)
    supported_languages = models.ManyToManyField(LanguagePair)
    description = models.TextField(_('Description'))
    type = models.CharField(_('Type'), max_length=32, choices=TRANSLATOR_TYPES, default='Serverland'),
    timestamp = models.DateTimeField(_('Refresh Date'), default=datetime.now())
    is_alive = models.BooleanField()

Не все зависимости были включены в этот пример кода.Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 20 декабря 2010

Я не знаю, если это опечатка, но я вижу "," запятую в конце строки, где вы объявляете ваш переводчик = models.ForeignKey (MachineTranslator)

Вот почему, может быть, атрибут не виден

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...