Как настроить многие ко многим дополнительными полями в моем случае - PullRequest
0 голосов
/ 06 апреля 2019

Существует 3 модели: Предмет, Предложение и Рейтинг и Отзывы.Заказчики создают задания для подрядчиков, хранятся в Товарах, подрядчики делают предложение в Предложении для задания.Предметы могут иметь несколько предложений.После выполнения задания клиенты оставляют оценку и отзыв для подрядчика.Каков наилучший способ создания моделей

class Item(models.Model):
    owner = models.ForeignKey(
        CustomUser,
        on_delete=models.CASCADE,
    )
    offers = models.ManyToManyField(
        'Offer',
        through='RatingAndReview'
    )

class Offer(models.Model):
    owner = models.ForeignKey(
        CustomUser,
        on_delete=models.CASCADE,
    )

class RatingAndReview(models.Model):
    item = models.ForeignKey(Item, on_delete=models.CASCADE)
    offer = models.ForeignKey(Offer, on_delete=models.CASCADE)
    rating = models.PositiveIntegerField()
    review = models.TextField()

Раньше у меня был элемент «один ко многим» - предложение, и я мог выбрать владельца предложения и элемент, для которого я его делаю, но должен былДобавить рейтинг и отзыв.Теперь, когда я создаю предложение в django-admin, я не могу получить доступ к элементу, для которого его нужно выбрать.Мои модели выглядят хорошо?Как я могу получить доступ к элементу при создании предложения?

1 Ответ

0 голосов
/ 06 апреля 2019

Несколько идей, как заставить его работать:

  • Если предложение связано с одним элементом, в * 1007 должен быть item внешний ключ (FK)* и нет поля M2M offers в Item.
  • Вы должны решить, будут ли оценки для товаров или предложений, и оставить только один FK в Review, не имеет смысла иметь двакогда между Offer и Item.
  • уже есть связь. Вам нужно каким-то образом указать «выигрышную» ставку, например, в виде поля selected_offer на Item.Это также помогает связывать обзоры со ставками и участниками, если вы решили ограничить обзоры элементами, а не предложениями.
...