コンテンツタイプを使用して一般的な関係を作成する際のエラー(object_pk)

django django-comments mysql mysql-error-1170
コンテンツタイプを使用して一般的な関係を作成する際のエラー(object_pk)

私はdjangoのContentTypeフレームワークを使って私のモデルのための一般的な関係を作成しようとしています。 djangoの開発者がどのようにそれを行うかを `django.contrib.comments.models`で調べた後、私は彼らのアプローチ/慣習を真似するつもりだと思いました:

django.contrib.comments.models、21行目から:

content_type   = models.ForeignKey(ContentType,
        verbose_name='content type',
        related_name="content_type_set_for_%(class)s")
object_pk      = models.TextField('object ID')
content_object = generic.GenericForeignKey(ct_field="content_type", fk_field="object_pk")

それは彼らのソースから取られたもので、もちろん、彼らのソースは私のために動作します(私はobject_pkのちょうど良い(実際には整数)格納されたコメントを持っています。

_mysql_exceptions.OperationalError: (1170, "BLOB/TEXT column 'object_pk' used in key specification without a key length")

なぜ彼らはそれを行うことができ、私はできないのですか?

見回した後、私はhttp://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#id1 [the docs]が実際に述べることに気づきました:

__
関連するモデルの主キー値を格納できるフィールドをモデルに与えます。 (ほとんどのモデルで、これはIntegerFieldまたはPositiveIntegerFieldを意味します。)

このフィールドは、総称関係に含まれることになるモデルの主キーと同じタイプでなければなりません。 たとえば、IntegerFieldを使用すると、CharFieldを主キーとして使用するモデルと一般的な関係を形成することはできません。
__

しかし、なぜ彼らはそれをすることができて、私ではないのですか?

ありがとう。

PS:これら3つのフィールドを使ってAbstractBaseModelを作成し、それを「abstract = True」にしてそれを使用することを試みました(それが何か問題がある場合)。 同じエラーです。

  1  0


ベストアンサー

私がその非常に長い質問をタイプした後私はmysqlを見て、そしてエラーが発生していることに気づいた:

class Meta:
    unique_together = (("content_type", "object_pk"),)

どうやら、私はそれを両方向にすることはできません。 それは私を引き裂いたままにします。 object_pk`オプションを開いたままにするのが良いのか(テキストフィールドを主キーとして使うのでしょうか?)それとも unique_togetherness`を強制するのに良いのかどうかについて新しい質問をしなければなりません…​

1


タイトルとURLをコピーしました