簡體   English   中英

無法查看我嘗試在 CRUD 中插入的數據

[英]Not able view the data that I am trying to insert in CRUD

我正在對產品進行 CRUD。我正在努力查看我要插入的數據。 下面是模型、序列化程序(因為我應該使用序列化程序而不是表單)、函數和 html

class Products(models.Model):
    categories = models.CharField(max_length=15)
    sub_categories = models.CharField(max_length=15)
    color = models.CharField(max_length=15)
    size = models.CharField(max_length=15)
    # image = models.ImageField(upload_to = 'media/',width_field=None,height_field=None,null=True)
    title = models.CharField(max_length=50)
    price = models.CharField(max_length=10)
    sku_number = models.CharField(max_length=10)
    product_details = models.CharField(max_length=300)
    quantity = models.IntegerField(default=0)
    isactive = models.BooleanField(default=True)
class POLLSerializer(serializers.ModelSerializer):
    class Meta:
        model = Products
        fields = "__all__"

def show(request):
    showall = Products.objects.all()
    print(showall)
    serializer = POLLSerializer(showall,many=True)
    print(serializer.data)
    return render(request,'polls/product_list.html',{"data":serializer.data})
def insert(request):
    if request.POST == "POST":
        print('POST',id)
        insert_clothes = {}
        insert_clothes['categories']=request.POST.get('categories')
        insert_clothes['sub_categories']=request.POST.get('sub_categories')
        insert_clothes['color']=request.POST.get('color')
        insert_clothes['size']=request.POST.get('size')
        # insert_clothes['image']=request.POST.get('image')
        insert_clothes['title']=request.POST.get('title')
        insert_clothes['price']=request.POST.get('price')
        insert_clothes['sku_number']=request.POST.get('sku_number')
        insert_clothes['product_details']=request.POST.get('product_details')
        insert_clothes['quantity']=request.POST.get('quantity')
        form = POLLSerializer(data = insert_clothes)
        if form.is_valid():
            form.save()
            # print('data',form.data)
            print(form.errors)
            messages.success(request,'Record Updated successfully :)!!!!')
            return redirect('polls:show')
        else:
            print(form.errors)
    else:
        print('GET',id)
        insert_clothes = Products.objects.all()
        form = POLLSerializer(data = insert_clothes)
        if form.is_valid():
            print(form.errrors)
        return render(request,'polls/product_insert.html')

下面是插入html代碼


<form method="POST">
            {% csrf_token %}
            <table>
                <thead>
                    <tr>
                        <td>Categories</td>
                        <td>
                            <select class="form-select" aria-label="Default select example" name="categories">
                                <option selected>Open this select menu</option>
                                <option value="1">9-6 WEAR</option>
                                <option value="2">DESI SWAG</option>
                                <option value="3">FUSION WEAR</option>
                                <option value="">BRIDAL WEAR</option>
                            </select>
                        </td>
                    </tr>
                    <tr>
                        <td>Sub-Categories</td>
                        <td>
                            <input type="text" name="sub_categories" placeholder="SUB_CATEGORIES">
                        </td>
                    </tr>
                    <tr>
                        <td>Colors</td>
                        <td>
                            <input type="text" name="color" placeholder="Enter Colors">
                        </td>
                    </tr>
                    <tr>
                        <td>Size</td>
                        <td>
                            <select class="form-select" aria-label="Default select example" name="size">
                                <option selected>Open this select menu</option>
                                <option value="SM">SM</option>
                                <option value="M">M</option>
                                <option value="L">L</option>
                                <option value="XL">XL</option>
                                <option value="XXL">XXL</option>
                                <option value="XXXL">XXXL</option>
                            </select>
                        </td>
                    </tr>
                    <tr>
                        <td>Title</td>
                        <td>
                            <input type="text" name="title" placeholder="Enter title">
                        </td>
                    </tr>
                    <tr>
                        <td>Price</td>
                        <td>
                            <input type="text" placeholder="Enter the price" name="price">
                        </td>
                    </tr>
                    <tr>
                        <td>SKU Number</td>
                        <td>
                            <input type="text" name="sku_number">
                        </td>
                    </tr>
                    <tr>
                        <td>product_details</td>
                        <td>
                            <textarea name="product_details" cols="30" rows="10">

                            </textarea>
                        </td>
                    </tr>
                    <tr>
                        <td>quantity</td>
                        <td><input type="number" name="quantity" placeholder="Enter the quantity"></td>
                    </tr>

                    <tr>
                        <td>
                            <input type="submit" value="Insert" />
                        </td>
                        <td>
                            {% if messages %}
                            {% for mess in messages %}
                            <b style="color:green;">{{mess}}</b>
                            {% endfor %}
                            {% endif %}
                        </td>
                    </tr>
                </thead>
            </table>
            <button class="btn btn-success"><a href="{% url 'polls:show' %}" style="color: red;">Go To Home</a></button>

        </form>

下面是顯示html

{% for result in data %}
      <tbody>
        <tr>
          <td><b>{{result.categories}}</b></td>
          <td><b>{{result.sub_categories}}</b></td>
          <td><b>{{result.color}}</b></td>
          <td><b>{{result.size}}</b></td>
          <td><b>{{result.title}}</b></td>
          <td><b>{{result.price}}</b></td>
          <td><b>{{result.sku_number}}</b></td>
          <td><b>{{result.product_details}}</b></td>
          <td><b>{{result.quantity}}</b></td>
          <td style="position: relative;left:50px;">
            <a href="/product_edit/{{result.id}}/">
              <button class="btn btn-primary">
                <i class="fa-solid fa-pen-to-square"></i>
              </button>
            </a>
          </td>
          <td>
            <a href="/Delete/{{result.id}}/" onclick="return confirm('Are You Sure you want to delete?')">
              <button class="btn btn-danger">
                <i class="fa-solid fa-trash"></i>
              </button>
            </a>
          </td>
        </tr>
      </tbody>
      {% endfor %}

輸入和模型的函數和名稱的命名似乎是正確的,那么我哪里出錯了?

我看到您正在為您的序列化程序構建 dict 。 我很確定您應該使用 Product 實例。

從請求數據構建 Product 實例,然后將其傳遞給 serilaizer

product = Product(
    categories=request.POST.get('categories'),
    ... # etc etc
    )

 form = POLLSerializer(product)

或者你甚至可以嘗試:

 form = POLLSerializer(request.data)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM