0

再利用可能なカルーセル アプリを作成しています。メイン プロジェクトのモデルを参照する必要があるため、一般的な外部キーを使用しました。再利用可能なアプリには次のようなものがあります。

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

class MyCarousel(models.Model):
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_group = generic.GenericForeignKey('content_type', 'object_id')
    ...

ここで、プロジェクトで content_type のタイプを制限できるようにしたいと考えています。上記のクラス宣言でこれを行っていた場合content_type、次のように行を書き換えることができます。

    content_type = models.ForeignKey(ContentType, limit_choices_to=models.Q(app_label = 'myapp', model = 'mymodel'))

しかし、再利用可能なアプリはどのモデルで使用されるかわからないため、後でプロジェクトで選択肢を制限したいと考えています。

これはできますか?たとえば、この擬似コードのように:

import my_carousel.models
my_carousel.models.MyCarousel.content_type.limit_choices_to = models.Q(app_label = 'myapp', model = 'mymodel')

実際、私の目的は、管理者が特定のモデルからのみ選択できるようにすることです。したがって、それを実装するソリューションはさらに優れています。

ありがとう!

4

0 に答える 0