Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:如何循环布尔字段并将all设置为false_Python_Django_Boolean - Fatal编程技术网

Python Django:如何循环布尔字段并将all设置为false

Python Django:如何循环布尔字段并将all设置为false,python,django,boolean,Python,Django,Boolean,因此,我有一个名为“order”的表,它有一个外键和表“store”。订单表的布尔字段默认设置为false。创建新订单时,我需要遍历与每个单独存储关联的布尔值,并将其他订单设置为false,将新订单设置为true。不确定如何为此创建for循环。首先,我尝试将其设置到视图中,但也许可以将其放入forms.py文件中?到目前为止,这是我的创建代码 def create(request): if request.POST: form = OrderForm(request.PO

因此,我有一个名为“order”的表,它有一个外键和表“store”。订单表的布尔字段默认设置为false。创建新订单时,我需要遍历与每个单独存储关联的布尔值,并将其他订单设置为false,将新订单设置为true。不确定如何为此创建for循环。首先,我尝试将其设置到视图中,但也许可以将其放入forms.py文件中?到目前为止,这是我的创建代码

def create(request):
    if request.POST:
        form = OrderForm(request.POST)
        if form.is_valid():

            form.save()     


         return HttpResponseRedirect('/liquors/all')
     else:
          form = OrderForm()

          args = {}
          args.update(csrf(request))

          args['form'] = form    

          return render_to_response('create_order.html', args)
根据要求提供的型号,除订购型号外,您不需要其他任何产品:

    class Order(models.Model):

       OrderID = models.AutoField(primary_key=True)
       storeID = models.ForeignKey(Store)    
       DateCreated = models.DateField('Date Created', auto_now_add=True)
       OrderName = models.CharField('Order Name', max_length=25 )
       Active = models.BooleanField()

您必须
返回render\u to\u response('create\u order.html',args)
一次缩进。这样验证表单就不会受到影响。如果使用的是
渲染
,则不需要使用
csrf请求
<我认为没有必要在订单模型中使用OrderId,因为它是自动创建的。ie id

from django.shortcuts import render
from <appname>.models import Order,Store

def create(request):
    if request.POST:            
        form = OrderForm(request.POST)
        if form.is_valid():
            #i just assume the storeid variable is exist in request.POST and it is ID.
            store_data=Store.objects.get(id=request.POST['storeid'])
            #here you might need to update the other orderform to false
            Order.objects.filter(storeID=store_data).update(Active=False)                
            fo=Order(storeID=store_data,Active=True)
            frm_order=OrderForm(request.POST,instance=fo)                
            frm_order.save()                  
        return HttpResponseRedirect('/liquors/all')
    else:
        form = OrderForm()                  
    return render(request,'create_order.html', {'form':form})
从django.exe导入渲染
从.models导入订单,存储
def创建(请求):
如有要求,请发送:
表单=订单(request.POST)
如果form.is_有效():
#我只是假设storeid变量存在于request.POST中,它是ID。
store\u data=store.objects.get(id=request.POST['storeid'])
#在这里,您可能需要将其他订单更新为false
Order.objects.filter(storeID=store\u data).update(Active=False)
fo=订单(storeID=存储\数据,活动=真)
frm_order=OrderForm(request.POST,instance=fo)
frm_订单保存()
返回HttpResponseRedirect(“/Liquirs/all”)
其他:
form=OrderForm()
返回呈现(请求,'create_order.html',{'form':form})

您可以使用order对象的元对象在字段中循环。前

for field in order._meta.fields():
    if type(field) = django.db.models.fields.BooleanField:
       setattr(order, field.name, True)

你能展示模型吗?如果你不提供模型,很难写出好的答案!!!我知道缩进,这就是它被复制和粘贴到这里的方式。重新调整一切,但我想我错过了那一次。无论如何,我会试试的。我忘了过滤活动订单。storeid并不像您所拥有的那样通过表单传递,但这很容易调整,谢谢。@RuSs没问题,很乐意帮助:)