【问题标题】:Django admin database not updating properly after admin input管理输入后 Django 管理数据库未正确更新
【发布时间】:2014-04-01 00:54:45
【问题描述】:

我遇到了一个问题,如果我在管理页面中删除产品,则由模板创建的链接到其余产品的所有 URL 都不再起作用,并且每个页面都会出现错误“没有图像与给定的匹配”询问。”

例如,如果只剩下一个产品,则从模板打印的 URL 应该是 .../products/1,但显示为 ../products/3 ,它什么都没有。如果我手动指向 /products/1 会进一步混淆,我也会得到同样的错误

我猜这个问题是由于 Image 和 Product 之间的外键关系或数据库如何使用 product_image_id 但我无法弄清楚。请帮忙!

型号

class Product(models.Model):
    product_name = models.CharField(max_length=200)
    product_type = models.CharField(max_length=200)
    product_description = models.TextField()
    def __unicode__(self):
        return self.product_name

class Image(models.Model):
    product_image = models.ForeignKey(Product)
    image = models.ImageField(upload_to='image')

观看次数

def productindex(request):
    product_list = Product.objects.all()
    context = {'product_list' : product_list}
    return render(request, 'polls/products.html', context)

def productpage(request, product_image_id):
    product = get_object_or_404(Product, pk=product_image_id)
    image = get_object_or_404(Image, pk=product_image_id)
    product_list = Product.objects.all()
    return render(request, 'polls/productpage.html', {'product': product, 'image': image,     'product_list' : product_list})

网址

url(r'products/(?P<product_image_id>\d+)/$', views.productpage, name='productpage'),

模板

   {% for product in product_list %}
<a href="{% url 'polls:productpage' product.id %}"><li class="procont"></li></a>
   {% endfor %}

【问题讨论】:

    标签: python django postgresql web


    【解决方案1】:

    在 jef79m 的帮助下,我得出了解决问题的这些结论

    网址

        url(r'products/(?P<product_id>\d+)/$', views.productpage, name='productpage'),
    

    观看次数

    def productpage(request, product_id):
        product_list = Product.objects.all()
        product = get_object_or_404(Product, pk=product_id)
        image = product.image_set.all()
        return render(request, 'polls/productpage.html', {'product': product, 'image': image,     'product_list' : product_list})
    

    【讨论】:

      【解决方案2】:

      您应该确保在每个部分中引用了正确的对象。对于您的产品页面,您应该在 URL 中传递 product_id

      然后在您的视图中,您可以像以前一样检索该产品,但您应该获取product.image_set.all() 以获取与该产品相关的所有图像,而不是使用 pk 获取图像。

      仔细检查教程:https://docs.djangoproject.com/en/dev/intro/tutorial01/

      在这种情况下,“问题”是您的产品,“选择”是您的形象。


      这是 AllTheTime 得出的最终解决方案。

      网址

          url(r'products/(?P<product_id>\d+)/$', views.productpage, name='productpage'),
      

      观看次数

      def productpage(request, product_id):
          product_list = Product.objects.all()
          product = get_object_or_404(Product, pk=product_id)
          image = product.image_set.all()
          return render(request, 'polls/productpage.html', {'product': product, 'image': image,     'product_list' : product_list})
      

      【讨论】:

      • 非常感谢!!!!我将通过具体示例发布答案。如果您想将它们放入您的答案中,然后我会接受并删除我的。
      猜你喜欢
      • 1970-01-01
      • 2010-10-13
      • 1970-01-01
      • 2021-06-02
      • 2017-05-06
      • 2013-01-03
      • 1970-01-01
      • 2020-10-01
      • 2020-03-21
      相关资源
      最近更新 更多