Я пишу поле галереи. Полевые подклассы ManyToManyField
и добавляет собственный виджет ajax и прочее. Я хочу сделать это решение настолько компактным, насколько это возможно (я имею в виду - я хочу написать как мало кода, чтобы по возможности реализовать его в других проектах).Django ManyToMany общая «сквозная» модель
Я решил создать промежуточную таблицу (которая обеспечивает «сквозную» параметра ManyToManyField
), который будет содержать информацию о заказе:
class IntermediateModel(models.Model):
from_content_type = models.ForeignKey(ContentType)
from_object_id = models.PositiveIntegerField()
from_content_object = generic.GenericForeignKey('from_content_type', 'from_object_id')
to_content_type = models.ForeignKey(ContentType)
to_object_id = models.PositiveIntegerField()
to_content_object = generic.GenericForeignKey('to_content_type', 'to_object_id')
order = models.PositiveIntegerField()
возникают следующие вопросы:
- ли возможно ли иметь «сквозную» модель для m2m в django, имеющую оба внешних ключа, указывающих на общие отношения (например, выше)? Если да - как этого добиться?
- Если это возможно - может ли такая модель содержать общие отношения между более чем одним полем m2m? Нравится: Class < -> Промежуточный итог < -> Студент, Галерея < -> Промежуточный итог < -> Фото - как с использованием промежуточной модели, так и по модели?
- EDIT: только что протестировано - я могу;) Могу ли я использовать абстрактные классы со «сквозными» таблицами? Я понял, что если вышеупомянутый сложный сценарий не будет работать, я бы просто создал два абстрактных класса, которые обеспечивают упорядочение и некоторые другие вещи, а затем всегда создают нормальные подклассы, чтобы фактически построить некоторые отношения :)
Я хочу иметь поле заказа в промежуточной модели. Я хотел бы создать общий plug'n'play GalleryField. Наличие общей промежуточной модели избавило бы меня от тяжелого мета-класса (автоматическое создание промежуточной таблицы). Вот некоторые основные шаги для достижения этого (imaging.fields.GalleryField и рефераты модели в imaging.models) https://github.com/pielgrzym/django-imaging.git – pielgrzym