2010-12-08 9 views
1

私のTranslationRequestモデルで一意制約を作成しようとしています。 TranslationRequestは、他のDjangoアプリケーションに存在するMachineTranslatorモデルとの外部キー関係を持ちます。 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.Django unique_togetherは、syncdbが実行されたときにアプリケーション間でForeignKeyフィールドを許可しません。

unique_constraint仕様からtranslatorを削除すると、syncdbが正しく実行されます。注:バックエンドデータベースとしてSqlite3を使用しています。

TranslationRequestSourceArticleの定義は次のとおりです。ここ

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')) 

は異なる(しかし参照Djangoアプリケーション)に、MachineTranslatorの定義です。

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() 

このコードサンプルには、すべての依存関係が含まれているわけではありません。ご協力いただきありがとうございます!

私は多分属性である理由です

models.ForeignKey(MachineTranslator)=あなたのトランスレータを宣言行の末尾に 『』「それはタイプミスであれば知っているが、私はSを参照してくださいコンマいけない

答えて

0

ot seens

+0

ありがとう、それは愚かな間違いでした。明らかに、コンマはunique_together経由でフィールドにアクセスしようとするとエラーが表示されただけです。そうでなければ、フィールドはコードのどこかで使用可能でした。 –

関連する問題