django добавление товаров в список через отношения m2m - PullRequest
0 голосов
/ 28 марта 2020

Как добавить продукты в существующий список? Любое руководство будет наиболее ценно.

Я получаю следующую ошибку:

ValueError в / core_lists / test_list / Невозможно назначить "": "ListHasProducts.product" должен быть экземпляром "Product".

models.py

    class Product(models.Model):
        brand = models.CharField(max_length=100)
        title = models.CharField(max_length=100)
        url = models.URLField()
        price = models.DecimalField(max_digits=8, decimal_places=2)
        created_at = models.DateTimeField('date published', auto_now_add = True)
        updated_at = models.DateTimeField('date updated', auto_now = True)

        def __str__(self):
            return self.title
    class List(models.Model):
        name = models.CharField(max_length=50)
        description = models.CharField(max_length=100)
        category = models.CharField(max_length=50)
        created_at = models.DateTimeField('date published', auto_now_add = True)
        updated_at = models.DateTimeField('date updated', auto_now = True)
        products = models.ManyToManyField(Product, through='ListHasProducts')

        def __str__(self):
            return self.name

    class ListHasProducts(models.Model):
        list = models.ForeignKey(List, on_delete=models.CASCADE)
        product = models.ForeignKey(Product, on_delete=models.CASCADE)

views.py

    def testList(request):
        test_form = ProductsForm
        if request.method == 'POST':
            test_form = ProductsForm(request.POST)
            if test_form.is_valid():
                test_form.save()
                ListHasProducts(list=List.objects.get(pk=13), product=test_form)
                ListHasProducts.save()
                return HttpResponseRedirect(reverse('core_lists:test_list'))

1 Ответ

0 голосов
/ 28 марта 2020

в соответствии с django документом

https://docs.djangoproject.com/en/dev/ref/contrib/admin/#working с множеством моделей

у вас должно быть related_name

class List(models.Model):
    name = models.CharField(max_length=50)
    description = models.CharField(max_length=100)
    category = models.CharField(max_length=50)
    products = models.ManyToManyField(Product, related_name='lists')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...