首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 ><QuerySet [<Address: Shreyash>,<Address: Shreyash>]>":"Order.address“必须是Address实例

<QuerySet [<Address: Shreyash>,<Address: Shreyash>]>":"Order.address“必须是Address实例
EN

Stack Overflow用户
提问于 2021-08-04 13:18:15
回答 1查看 59关注 0票数 0

我有与表单相关模型,我想要的是当用户点击提交按钮,从go提交并保存在数据库中,但在这里我得到了错误,所以什么要实现的是一个单一的地址得到提交,而不是所有的地址,这是与白色模型选择字段链接,所以任何想法我可以实现这一点

这是我的models.py

代码语言:javascript
复制
class Order(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE,)
    item = models.ForeignKey(Item, on_delete=models.CASCADE )
    address = models.ForeignKey(Address, on_delete=models.CASCADE)
    price = models.FloatField(blank=False)
    update_at = models.DateTimeField(auto_now=True, editable=False)


    def placeorder(self):
        self.save()
    
    def __str__(self):
        return self.user.username

class Address(models.Model):
    eighteen_choice = {
        ('Yes','Yes'),
        ('No','No')
    }
    phoneNumberRegex = RegexValidator(regex = r"^\d{10,10}$")
    pincodeRegex = RegexValidator(regex = r"^\d{6,6}$")
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='address')
    reciever_name = models.CharField(max_length=200, blank=False)
    phone_no = models.CharField(validators = [phoneNumberRegex], max_length = 10, blank=False)
    alt_phone_no = models.CharField(validators = [phoneNumberRegex], max_length = 10, blank=True)
    state = models.CharField(max_length=50, choices=state_choice, blank=False)
    pincode = models.CharField(validators = [pincodeRegex], max_length = 6, blank=False)
    eighteen = models.CharField(blank=False, choices=eighteen_choice, default='Yes', max_length=4 )
    city = models.CharField(max_length=100, blank=False)
    address = models.CharField(max_length=500, blank=False)
    locality = models.CharField(max_length=300, blank=True)
    joined_date = models.DateTimeField(default=timezone.now,editable=False)
    update_at = models.DateTimeField(auto_now=True)


    def __str__(self):
        return self.user.username

我的views.py

代码语言:javascript
复制
class Checkout(View):
    def post (self, request,):
        user = request.user
        address = Address.objects.filter(user=request.user)
        ids = (list(request.session.get('cart').keys()))
        items = Item.get_items_by_id(ids)

        for item in items:
            order = Order(user=user, item=item, address=address, price=item.price)
            order.save()
        
        request.session['cart'] = {}

        return redirect('transactions:cart')

我的html

代码语言:javascript
复制
<div class="modal-body">
           <form action="{% url 'transactions:checkout' %}" method="Post">
             {% csrf_token %}
                 #in that i want i want to user select a address instead of all his address 
                    with miltiple choice field
             <input type="submit" class="btn float-right btn-primary" value='Go Ahead'>
           </form>
          </div>
EN

回答 1

Stack Overflow用户

发布于 2021-08-04 13:34:55

您必须将一个地址传递给订单,我不知道您将如何检查您将使用哪个地址,但一个简单的方法是选择第一个地址,如下所示:

代码语言:javascript
复制
 order = Order(user=user, item=item, address=address.first(), price=item.price)

或者,如果你有一个默认的地址,你可以使用下面的地址:

代码语言:javascript
复制
address = Address.objects.filter(user=request.user, default=True)

如果您以这种方式定义了默认地址,那么您将获得该用户的默认地址。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68651980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档