Как связать две разные модели Django в поле «многие ко многим», чтобы сформировать другую? - PullRequest
1 голос
/ 13 мая 2019

Я пытаюсь найти решение следующей проблемы с моделями django: Приложение добавит товары в корзину. Проблема в том, что эти продукты принадлежат к разным моделям, и независимо от того, откуда они берутся, я бы хотел использовать один ManyToManyField для их включения.

Допустим, у меня есть два разных вида продуктов от двух разных моделей:

Class ListOfProducts1(models.Model):
name= CharField()
price= IntegerField()

Class ListOfProducts2(models.Model):
name=CharField()
price=IntegerField()

Следующая модель будет использоваться для получения количества и добавленного продукта (а затем связана с одним конкретным заказом). Здесь проблема. Посмотрите на добавленные поля, где я хочу связать это поле с ListOfProducts 1 и 2. Я бы поместил их обоих в одно поле, но я уже знаю, что это невозможно. Просто для лучшего понимания проблемы здесь у вас есть:


Class ProductsOrdered(models.Model):
itemsadded= OneToOneField(ListOfProducts1 and ListOfProducts2,on_delete=models.CASCADE)
Quantity = IntegerField()

Тогда модель заказа:


Class Orders(models.Model):
cart= ManyToManyField(ProductsOrdered)

1 Ответ

0 голосов
/ 17 мая 2019

Поля OneToOne могут ссылаться только на одну таблицу.

Но вы можете использовать либо GenericForeignKey, либо альтернативы (что лучше).

Посмотрите на эту статью: Избегайте GenericForeignKey Джанго.Описываются альтернативы, такие как:

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