Django Dynami c категории Использование моделей - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь создать динамическую категорию c, используя внешний ключ в django, но не могу сохранить раскрывающуюся категорию

Это мой view.py

@login_required(login_url='login')
@admin_only
def add_product(request):
    name = request.POST.get('name')
    description = request.POST.get('description')
    price = request.POST.get('price')
    select = request.POST.get('dropdown')
    b = Product.objects.all()
    categories = Category.objects.all()
    if request.method == 'POST':
        b = Product.objects.create(name=name, description=description, price=price, category=select)

    return render(request, 'product.html', {'b': b, 'category': categories })

это models.py

class Category(models.Model):
    categoryname = models.CharField(max_length=255, null=True)

    def __str__(self):
        return self.categoryname



class Product(models.Model):
    name = models.CharField(max_length=255, blank=False, null=True)
    description = models.CharField(max_length=255, blank=False, null=True)
    price = models.CharField(max_length=50, blank=False, null=True)
    date = models.DateTimeField(auto_now_add=True, null=True)
    category = models.ForeignKey(Category, on_delete= models.CASCADE, null=True)

    def __str__(self):
        return self.name

это html для добавления продукта

{% block content %}

<div class="container">
    <div class="row">
        <form class="center-align" action="{% url 'addproduct' %} " method="POST">
            {% csrf_token %}
            <div class="input-field col s12">
            <input value="" id="name" name="name" type="text" class="validate">
            <label class="active" for="name">ProductName</label>
            </div>
            <div class="input-field col s12">
            <input value="" id="des" name="description" type="text" class="validate">
            <label class="active" for="des">Description</label>
            </div>
            <div class="input-field col s12">
            <input value="" id="price" name="price" type="text" class="validate" required>
            <label class="active" for="price">Price</label>
             </div>
             <div class="input-field col s12">
              <select name="dropdown" class="browser-default">
                <option value="" disabled selected>Choose your option</option>
                {% for item in category %}
                     <option value="{{ item.categoryname }}">{{ item.categoryname }}</option>
                {% endfor %}
               </select>
               </div>

            <button class="btn waves-effect waves-light" type="submit" name="action" required>Add
                <i class="material-icons right">send</i>
              </button>
              {{products.erros}}

        </form>
    </div>


</div> 
{% endblock %}

Я не могу для выбора значения из выпадающего списка написано

Невозможно назначить "'category'": "Product.category" должен быть экземпляром "Category".

Пожалуйста, помогите мне с этим

...