Сделайте ForiegnKey неизвестной модели в django - PullRequest
1 голос
/ 08 марта 2020

Я проиллюстрирую на примере

У меня есть

class Stone(models.Model):
    # name, color, whatever

class Member(models.Model):
    # whatever

class Image(models.Model):
    stone = models.ForiegnKey(Stone, on_delete=...) # this should have the model that needs images
    image = models.ImageField()

Я использую foriegnKey для модели Image для создания нескольких изображений, но это вынуждает меня создавать модель Image для каждой модели, в моем примере, камень может иметь несколько изображений, верно? Я хочу, чтобы Member и все мои модели, которым нужны изображения, использовали один и тот же класс, я хочу сделать только одну таблицу изображений.

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

Редактировать 1: Я действительно думал о создании 2 обнуляемых ForiegnKeys, но это похоже на обходной путь, а не на решение.

1 Ответ

0 голосов
/ 27 апреля 2020

Я думаю, ContentType - это то, что я искал, по словам разработчика Disqus Дэвида Крамера здесь

Generi c отношения в порядке. Они не медленные, просто сложнее управлять в вашей кодовой базе.

Полагаю, это ответ, я хотел бы отметить, что, как сказал @Adithya, django-polymorphic тоже может помочь, так как я Я попробовал это, и это похоже на простое решение, добавив концепцию OOP 1011 * Полиморфизм к системе django моделей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...