3

私はdjango 1.5.2にモデルのグループを持っていGenericForeignKeyますGenericRelation. 問題は、プロキシ継承も使用していることです。一般的な関係はフィールドですが、DB フィールドではありませんが、モデルを検証するときに、django はプロキシ継承モデルでフィールドを認識し、エラーを発生させます。

以下は、私の問題の簡略版です。TaggableArticle のタグに簡単にアクセスできる簡単なソリューションはありますか?

from django.db import models
from django.contrib.contenttypes import generic
from django.contrib.contenttypes.models import ContentType


class Tag(models.Model):
    tag = models.SlugField()
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')


class Article(models.Model):
    text = models.TextField()


class TaggableArticle(Article):
    tags = generic.GenericRelation(Tag)

    class Meta:
        proxy = True

結果は次のとおりです。

python manage.py validate            
FieldError: Proxy model 'TaggableArticle' contains model fields.
[1]    15784 exit 1     python manage.py validate

これまでの私の考え:

  • django 1.6 ではfor_concrete_model一般的なリレーションにフラグが導入されていますが、これで問題が解決するかどうかはわかりません。リレーションがArticleにある場合、およびオブジェクトに適切なコンテンツタイプ(Article vs TaggedArticle)でタグ付けできるようにしたい場合に役立つことを理解しました。
  • リレーションを削除して、他のエンドポイントからアクセスすることもできます (つまり、Tag.objects.filter(content_object=myTaggedArticle) または手動でこれにメソッドを追加します) が、実装の一部は、RelatedManager を使用しているという事実を統合しています通常の Manager だけでなく、TaggedArticle クラス全体から来た場合、関連する Manager を取得することはできません。

ありがとうございます!

4

0 に答える 0