@lehubozedo

Как сделать чтобы модель ссылалась на себя?

Преамбула:
Есть 3 модели:
Картофель, Баклажан, Томат

И есть одна связующая модель - Овощ (она для каталога интернет магазина, т.к. в корзине могут быть разные товары, и на главной, вот она везде используется, можно сказать прокси модель (без атрибута proxy),

class Veggies(models.Model):
   tomato = models.OneToOneField(Tomato, verbose_name='Томат', on_delete=models.CASCADE, blank=True, null=True)
    ...


Суть вопроса:
мне нужно чтобы к модели Овощ можно было прицепить подарки (понятно что это абстракция), тот же овощ.
Ссылка на саму себя - не то, т.к. подарков может быть несколько.
Пусть томат, картофан, баклажан ссылаются на овощ? или как то еще можно? Помогите плиз.
  • Вопрос задан
  • 293 просмотра
Решения вопроса 1
@lehubozedo Автор вопроса
Все решилось одной строчкой
gifts = models.ManyToManyField('self', blank=True, symmetrical=False)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
flygrounder
@flygrounder
Python/Django
Если вам нужно к овощу прицепить овощ, то стоит задуматься о том, что овощ+подарок - это уже другая абстракция, а значит и другая модель
Ответ написан
Комментировать
mmmaaak
@mmmaaak
Создать вторую таблицу: id, овощ_id, овощ_подарок_id. Пара овощ_id и овощ_подарок_id сделать уникальной
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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