Как привязать несколько моделей к одному ManyToManyField?

Ни UIImageView, ни UIImage не сохраняются в имени файла загруженного изображения.

Вы можете либо

1: (как было предложено Kenny Winker выше) подкласса UIImageView иметь файлName свойство или

2: назовите файлы изображений с цифрами (image1.jpg, image2.jpg и т. д.) и пометьте эти изображения соответствующим номером (tag = 1 для image1.jpg, tag = 2 для image2. jpg и т. д.) или

3: Имейте переменную уровня класса (например, NSString * currentFileName), которая обновляется всякий раз, когда вы обновляете образ UIImageView

1
задан Parvektor 16 January 2019 в 13:18
поделиться

1 ответ

На момент написания статьи это невозможно. A ManyToManyField [Django-doc] имеет позиционный аргумент to с:

class ManyToManyField(to, **options)

Отношение «многие ко многим». Требуется позиционный аргумент: класс, к которому относится модель , который работает точно так же, как и для ForeignKey, включая рекурсивные и ленивые отношения.

Это также может создать некоторую путаницу: что должно mtm возвращать для some_a.mtm.all()? Все связанные B объекты? Кортежи объектов B, C и D? Как следует называть обратные отношения?

Это, однако, не означает, что вы не можете подражать таким отношениям. Вы можете сделать модель, которая действует как отношение. Фактически, если вы определите ManyToManyField, Django создаст таблицу, в которой будут храниться данные из этого отношения.

Таким образом, мы можем определить такую ​​модель как:

class ABCDRel(models.Model):
    a = models.ForeignKey(A, on_delete=models.CASCADE, related_name='mtm')
    b = models.ForeignKey(B, on_delete=models.CASCADE, related_name='mtm')
    c = models.ForeignKey(C, on_delete=models.CASCADE, related_name='mtm')
    d = models.ForeignKey(D, on_delete=models.CASCADE, related_name='mtm')

Затем мы можем, например, получить QuerySet всех связанных ABCDRelation с:

some_a.mtm.all()

Или вы может получить QuerySet всех связанных B объектов посредством этого отношения с:

B.objects.filter(mtm__a=some_a)

Отношение может содержать дополнительные данные, но, по сути, таким образом хранит «кортежи» того, как объекты моделей связаны друг другу.

Таким образом, создается модель сущности-отношения, которая более или менее выглядит следующим образом:

Entity-relation model of this modeling

0
ответ дан Willem Van Onsem 16 January 2019 в 13:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: