Модель используется как промежуточная модель, но у нее нет ошибки внешнего ключа со сквозными моделями
Я новичок в 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'.