Модель используется как промежуточная модель, но у нее нет ошибки внешнего ключа со сквозными моделями

Я новичок в Django и в настоящее время пытаюсь улучшить дизайн, который я использовал. Вот мой models.py файл.

from djongo import models
import uuid

PROPERTY_CLASSES = (
    ("p1", "Video Property"),
    ("p2", "Page Property"),
    ("trait", "Context Trait"),
    ("custom", "Custom Property")
)

class Device(models.Model):
    _id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=255)

class Platform(models.Model):
    _id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=255)

class EventPlatformDevice(models.Model):
    _id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = "Event Specifics"
    event_field = models.ForeignKey('Event', on_delete=models.CASCADE)
    applicable_apps = models.ForeignKey('Platform', on_delete=models.CASCADE)
    applicable_devices = models.ManyToManyField('Device')
    property_group = models.ManyToManyField('PropertyGroup', blank=True)
    custom_properties = models.ManyToManyField('Property', blank=True)

class Event(models.Model):
    _id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=255, unique=True)
    applicable_platforms = models.ManyToManyField(Platform, through=EventPlatformDevice)

class PropertyGroup(models.Model):
    _id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=100)
    applicable_properties = models.ManyToManyField('Property')

class Property(models.Model):
    _id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=255)
    #applicable_platform = models.ManyToManyField(Platform, through=PlatformDevice)   
    property_class = models.CharField(max_length=20, choices=PROPERTY_CLASSES)
    format_example = models.TextField(blank=True)
    notes = models.TextField(blank=True)

Проблема, с которой я столкнулся, связана с моделью EventPlatformDevice. Сейчас в панели администратора я могу выбрать несколько элементов для полей applicable_devices, property_group и custom_properties. Поле applicable_apps является единственным выбором. Я пытаюсь превратить его в мультиселект, но при замене ForeignKey на ManyToManyField возникает ошибка:

<class 'parsers.admin.EventPlatformDeviceInline'>: (admin.E202) 'parsers.EventPlatformDevice' has no ForeignKey to 'parsers.Event'.
parsers.EventPlatformDevice: (fields.E336) The model is used as an intermediate model by 'parsers.Event.applicable_platforms', but it does not have a foreign key to 'Event' or 'Platform'.
Вернуться на верх