如何通过订单上传付款图片,' querySet'对象没有属性' _Meta'

发布于 2025-02-06 17:15:25 字数 2406 浏览 2 评论 0原文

我无法过滤到上传图片。 我想通过:

orders = order.objects.filter(id = orid,id_profil = id_profil)

获取错误:

'querySet'对象没有属性'_meta'

forms.py

def Detail(request, orid=None):
data = cartData(request)
cartItems       = data['cartItems']
id_profil       = request.user.profile 
orders          = Order.objects.filter(id=orid, id_profil=id_profil)
OrderItems      = OrderItem.objects.filter(order=orid)
pengirimans     = Pengiriman.objects.filter(order=orid)
if request.method == "POST":
    form = Uplaodpic(request.POST ,request.FILES ,instance=orders)
    if form.is_valid():
        form.save()
else:
    form=Uplaodpic(instance=orders)
context = {'orders':orders, 'OrderItems':OrderItems, 'pengirimans':pengirimans, 'cartItems':cartItems, 'form':form}
return render(request, 'store/detail.html' ,context)

detial.html

from django.forms import ModelForm
from .models import Order, Profile
class Uplaodpic(ModelForm):
    class Meta:
        model=Order
        fields=["id","bukti"]

模式

 <td colspan="2">
            <img src="{{ order.buktiURL }}" alt="image" class="img-thumbnail" style="max-height:100px">
          </td>
          <td colspan="2">
            <form action="" method="post"   enctype="multipart/form-data">
              {% csrf_token %}
              {{form.as_p}}
              <input type="Submit" id="submit" name="submit">
            </form>
            </td>
        </tr>

.py

class Order(models.Model):
    id_profil    = models.ForeignKey(Profile, on_delete=models.SET_NULL, blank=True, null=True)
    order_data   = models.DateTimeField(auto_now_add=True)
    selesai      = models.BooleanField(default=False, blank=True, null=True)
    status       = models.BooleanField(default=False, blank=True, null=True)
    id_transaksi = models.CharField(max_length=200, null=True) 
    bukti        = models.ImageField(upload_to='bukti/',default="person-circle.svg",null=True, blank=True)
    ongkir       = models.CharField(max_length=200, null=True) 
    total        = models.CharField(max_length=200, null=True)
    total_harga  = models.CharField(max_length=200, null=True)
    pembayaran   = models.CharField(max_length=200, null=True)

I can't filter to upload pictures.
I want to upload pictures by :

orders= Order.objects.filter(id=orid, id_profil=id_profil)

get error :

'QuerySet' object has no attribute '_meta'

view.py

def Detail(request, orid=None):
data = cartData(request)
cartItems       = data['cartItems']
id_profil       = request.user.profile 
orders          = Order.objects.filter(id=orid, id_profil=id_profil)
OrderItems      = OrderItem.objects.filter(order=orid)
pengirimans     = Pengiriman.objects.filter(order=orid)
if request.method == "POST":
    form = Uplaodpic(request.POST ,request.FILES ,instance=orders)
    if form.is_valid():
        form.save()
else:
    form=Uplaodpic(instance=orders)
context = {'orders':orders, 'OrderItems':OrderItems, 'pengirimans':pengirimans, 'cartItems':cartItems, 'form':form}
return render(request, 'store/detail.html' ,context)

forms.py

from django.forms import ModelForm
from .models import Order, Profile
class Uplaodpic(ModelForm):
    class Meta:
        model=Order
        fields=["id","bukti"]

detial.html

 <td colspan="2">
            <img src="{{ order.buktiURL }}" alt="image" class="img-thumbnail" style="max-height:100px">
          </td>
          <td colspan="2">
            <form action="" method="post"   enctype="multipart/form-data">
              {% csrf_token %}
              {{form.as_p}}
              <input type="Submit" id="submit" name="submit">
            </form>
            </td>
        </tr>

modes.py

class Order(models.Model):
    id_profil    = models.ForeignKey(Profile, on_delete=models.SET_NULL, blank=True, null=True)
    order_data   = models.DateTimeField(auto_now_add=True)
    selesai      = models.BooleanField(default=False, blank=True, null=True)
    status       = models.BooleanField(default=False, blank=True, null=True)
    id_transaksi = models.CharField(max_length=200, null=True) 
    bukti        = models.ImageField(upload_to='bukti/',default="person-circle.svg",null=True, blank=True)
    ongkir       = models.CharField(max_length=200, null=True) 
    total        = models.CharField(max_length=200, null=True)
    total_harga  = models.CharField(max_length=200, null=True)
    pembayaran   = models.CharField(max_length=200, null=True)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

友谊不毕业 2025-02-13 17:15:25

实例参数在这里应该是一个对象,而不是QuerySet。从ID名称来看,您应该使用get而不是filter来获取单个对象或失败。因此,您的代码看起来像这样(经过非常基本的格式以使其可读)

from django.http import HttpResponseNotFound

def Detail(request, orid=None):
    data = cartData(request)
    cartItems = data['cartItems']
    id_profil = request.user.profile 
    OrderItems = OrderItem.objects.filter(order=orid)
    pengirimans = Pengiriman.objects.filter(order=orid)
    
    try:
        # Note the singular
        order = Order.objects.get(id=orid, id_profil=id_profil)
    except Order.DoesNotExist:  # Not owned bu user or does not exist
        return HttpResponseNotFound()

    if request.method == "POST":
        form = Uplaodpic(request.POST, request.FILES, instance=order)
        if form.is_valid():
            form.save()
    else:
        form = Uplaodpic(instance=order)

    context = {
        'order': order,  # Note the singular, you're using "order" in template anyway
        'OrderItems': OrderItems, 
        'pengirimans': pengirimans, 
        'cartItems': cartItems, 
        'form': form
    }
    return render(request, 'store/detail.html', context)

instance parameter here should be a single object, not QuerySet. Judging by id name, you should be using get instead of filter to fetch a single object or fail. So, your code could look like this (after very basic formatting to become readable):

from django.http import HttpResponseNotFound

def Detail(request, orid=None):
    data = cartData(request)
    cartItems = data['cartItems']
    id_profil = request.user.profile 
    OrderItems = OrderItem.objects.filter(order=orid)
    pengirimans = Pengiriman.objects.filter(order=orid)
    
    try:
        # Note the singular
        order = Order.objects.get(id=orid, id_profil=id_profil)
    except Order.DoesNotExist:  # Not owned bu user or does not exist
        return HttpResponseNotFound()

    if request.method == "POST":
        form = Uplaodpic(request.POST, request.FILES, instance=order)
        if form.is_valid():
            form.save()
    else:
        form = Uplaodpic(instance=order)

    context = {
        'order': order,  # Note the singular, you're using "order" in template anyway
        'OrderItems': OrderItems, 
        'pengirimans': pengirimans, 
        'cartItems': cartItems, 
        'form': form
    }
    return render(request, 'store/detail.html', context)

(note that it would be better to spell Upload, not Uplaod...)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文