your apps are app and app2 and there are A, B models in app and there are C, D models in app2.
you want to see only app.A and app.B and app2.C
from django.db import models class TaggedItem(models.Model): tag = models.SlugField() limit = models.Q(app_label="app", model="a") | models.Q(app_label="app", model="b") | models.Q(app_label="app2", model="c") content_type = models.ForeignKey(ContentType, limit_choices_to = limit) object_id = models.PositiveIntegerField() content_object = generic.GenericForeignKey('content_type', 'object_id')
use limit_choices_to on ForeignKey.
check django docs for details and Q objects, app_label.
you need to write proper app_label and model. This is just code snippet
plus: I think you write wrong app_label. This can help you.
from django.contrib.contenttypes.models import ContentType for c in ContentType.objects.all(): print(c.app_label, c.model)