すべてのテーブルのすべてのインスタンスにオブジェクト インスタンスが必要でした。これを行うには、1 対 1 の主キー フィールドが適しているように見えました。以下の小さな例のように。
from util.fields import BigAutoField,BigForeignKey
from django.db import models
class Common_document(models.Model):
pk = models.OneToOneField("Type_object", primary_key=True, related_name="common_document_content_pk")
author = models.ManyToManyField("Type_object", related_name = 'common_document_author',
limit_choices_to = {"Common_document_author_author":"Type_object"} ,null = True,
through = 'Common_document_author', blank = True)
#....
class Common_document_author(models.Model):
pk = models.OneToOneField("Type_object", primary_key=True, related_name="common_document_author_pk")
document = BigForeignKey("Common_document", related_name='Common_document_author_document')
author = BigForeignKey("Type_object", related_name='Common_document_author_author')
class Type_object(models.Model):
id = BigAutoField(primary_key=True)
#....
# Some of the fields are m2m
ただし、これにより次のエラーが発生しました。
django.core.management.base.CommandError: 1 つ以上のモデルが検証されませんでした: schema.common_document: 中間モデル Common_document_author には Type_object への複数の外部キーがありますが、これはあいまいで許可されていません。
document_author テーブルの pk フィールドをコメントアウトすると、このエラーは解消されます。djangoが魔女オブジェクトFKを使用するかわからないため、エラーが発生すると思います。これを修正するにはどうすればよいですか? m2mフィールドで使用されるm2mテーブルのフィールドをdjangoに伝える方法はありますか?
私はおそらくこのようにそれをするつもりはありません。m2m テーブルはおそらくオブジェクト インスタンスを持つ必要はありませんが、これを行う方法を知りたいです。