首页 > 解决方案 > 在 ListView 中编辑模型

问题描述

我目前正在为我父母的面包店制作一个网站。我想为他们制作一个自定义管理页面,这样他们就可以轻松更新他们的产品。

到目前为止,我只有一个显示所有产品的 ListView。 在此处输入图像描述

这是我的模型:

class menulist(models.Model):
    name = models.CharField(max_length=120)
    description = models.CharField(max_length=500)
    price = models.DecimalField(decimal_places=1, max_digits=10, default=100.00)
    category_choices = (
        ('breads', 'Breads'),
        ('cakes', 'Cakes'),
        ('hotfood', 'Hot Food'),
        ('porkrolls', 'Pork Rolls'),
        ('drinks', 'Drinks'),
        ('MISC', 'Misc'),
    )
    category = models.CharField(max_length=50, choices=category_choices, default='MISC',)
    dateadded = models.DateField(auto_now_add=True)
    dateupdated = models.DateField(auto_now=True)
    img = models.ImageField(upload_to='products/', default='products/blank.jpg')

    def __str__(self):
        return self.name

风景:

class ProductAdminView(ListView):
    template_name = 'menulistapp/product_admin.html'
    queryset = menulist.objects.all()

模板:

    {% extends "base.html" %}

    {% block content %}        
  <div class="container">
      <div class="row">

          <table class="table table-striped table-hover ">
              <thead class="thead-dark">
                <tr>
                    <th style="width: 15%"scope="col"></th>
                    <th style="width: 55%" scope="col">Product Name</th>
                    <th scope="col">Category</th>
                    <th scope="col">Price</th>
                    <th scope="col">Date Added</th>
                    <th scope="col">Last Updated</th>

                </tr>
              </thead>
              <tbody>
                {% for obj in object_list %}
                <tr>
                    <td class="align-middle"><img src="{{ obj.img.url }}" class="img-fluid"></td>
                    <td class="align-middle">{{ obj.name }}</td>
                    <td class="align-middle">{{ obj.get_category_display }}</td>
                    <td class="align-middle">${{ obj.price }}</td>
                    <td class="align-middle">{{ obj.dateadded }}</td>
                    <td class="align-middle">{{ obj.dateupdated }}</td>

                </tr>
                {% endfor %}
              </tbody>
            </table>

      </div>
  </div>

    {% endblock %}

如何将项目分成自己的类别表?

以及如何使每个单元格都可以使用自己的 CharField 进行编辑,并且每个表格的底部都有一个“保存”按钮?

例如: 在此处输入图像描述

标签: django-modelsdjango-formsdjango-views

解决方案


你必须使用形式的概念来实现这一点

有关更多信息,请访问https://docs.djangoproject.com/en/2.1/topics/forms/


推荐阅读