Astrohas
@Astrohas
Python/Django Developer

Почему не работает ManyToMany?

class Product(models.Model):
         slug = models.SlugField()
class ModalProduct(models.Model):
    modal = models.ForeignKey('Modal'),
    product = models.ForeignKey(Product)
    weight = models.SmallIntegerField(default=0)

class Modal(models.Model):
    products = models.ManyToManyField(Product, through=ModalProduct, through_fields=('modal', 'product'))

При makemigrations получаю
ERRORS:
offers.Modal.products: (fields.E338) The intermediary model 'offers.ModalProduct' has no field 'modal'.
offers.ModalProduct: (fields.E336) The model is used as an intermediate model by 'offers.Modal.products', but it does not have a foreign key to 'Modal' or 'Product'.

В чем может быть проблема?
  • Вопрос задан
  • 690 просмотров
Решения вопроса 1
Astrohas
@Astrohas Автор вопроса
Python/Django Developer
очень-очень странный вид: речка за окном горит, чей-то дом хвостом виляет, песик из ружья стреляет, мальчик чуть не слопал мышку, кот в очках читает книжку, старый дед влетел в окно, воробей схватил зерно, да как крикнет, улетая: вот что значит запятая!

Запятая после ForeignKey('Modal') это щедевр
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@ns5d
нечего сказать
class Person(models.Model):
    name = models.CharField(max_length=50)

class Group(models.Model):
    name = models.CharField(max_length=128)
    members = models.ManyToManyField(
        Person,
        through='Membership',
        through_fields=('group', 'person'),
    )

class Membership(models.Model):
    group = models.ForeignKey(Group, on_delete=models.CASCADE)
    person = models.ForeignKey(Person, on_delete=models.CASCADE)
    invite_reason = models.CharField(max_length=64)


https://docs.djangoproject.com/en/1.11/ref/models/...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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