6.20 JLL--实习日志-- teneat关联Availabilty,retail 增删改插的函数理解
2017-06-21 18:42
369 查看
1.实现170 的功能
实现一个onlick 的功能 ,点击以后 出现一个框,可以填写availablity ,在选择的时候是默认的空白值!
template 端
实现 下拉框的代码 ,通过 select 的id 进行传输
通过request.post.get的方式得到对应的对应的两个值!!,通过form的形式获得前端的下拉框的值,
view 端
template 端
需要修改 html 的样式 ,原则是查看上面的代码,最外面的div 用的是col-sm-4样式,
里面有一个标准的 格式,是 在form 端肯定需要的代码,如果 包含一个类型的 并且type =submit 的时候,他可以自己跳转到对应的form地址
具体怎么跳转呢?? ? 好像没有搞清楚 —-
form 端,增加了两个在 数据库中不存在的列,用在传输的过程中,但是现在这个好像没怎么用到了,等以后使用的时候再说吧
修改location 增加一个函数的方式,下拉框的形式
还没有说清楚 leon
1.pull 一个新的版本 ,
2. 我需要把SSH 的换一下
3. 始终带着brand_id ,理解critcal id, www.sina/11/?a=12, 除了delete,edit 方式的都不需要带着id ,
4.migrate 里面的 0001.initial.py ,
ManyToMany 的类型,company[brands],
view_company_contact 的逻辑顺序是
如果传过来的request里面有company_id
再去判定传过来的company_id 是不是为空
如果存在,就通过company_id 找到对应的 company ,如果传进来的值为空,就通过brand_id 去查看brand 下面的公司(可能有多个,),
然后得到brand 下 所有公司的 company_contacts 查看 ,
返回对应的
返回的时候都要带着brand_id ,company_id带着走 ,
重用id 判断company_id = “” 是不是为空,如果是空的话,说明你是brand_id ,不允许你add company ,
首先应该判定又没有company_id ,同时我要一直带着brand_id ,
1 第一次进入输入界面,需要传一个空的数据
2
如果提交失败,
4.
edit_company_contact得到的方式是这样子的,
delete ,
实现一个onlick 的功能 ,点击以后 出现一个框,可以填写availablity ,在选择的时候是默认的空白值!
template 端
实现 下拉框的代码 ,通过 select 的id 进行传输
<div class="form-group col-sm-4" id="insert_value_2"> <label style="margin-top:0px; margin-bottom:0px">Locate the stock:</label> <select id="insert_value_1" class="form-control" name="insert_value_1" title = "insert_value_1"> {% for availability in availabilities %} <option value='{{ availability.Unit }}' id='{{availability.Unit}}'>{{availability.Unit}}</option> {% endfor %} </select> </div>
通过request.post.get的方式得到对应的对应的两个值!!,通过form的形式获得前端的下拉框的值,
request.POST里面 是id ,但是为什么是通过方括号的形式呢??
request.POST.get得到的是单一的值
view 端
a =request.POST.get('newAvailablity') # 通过post方式得到前端下拉菜单里面的值, city_pk_list = request.POST['insert_value_1']
template 端
需要修改 html 的样式 ,原则是查看上面的代码,最外面的div 用的是col-sm-4样式,
<div id="new_Availablity" class="col-sm-4" style="display:none"> <div class="form-group" style="margin-top:0px; margin-bottom:0px"> <label style="margin-top:0px; margin-bottom:0px">NEW Stock:</label> <input type="text" class="form-control" name="newAvailablity" id="newAvailablity" value="newAvailablity"/> </div> </div> <a class="btn btn-primary" style="margin-top 4000 :20px" onclick='goclick3()' id ="addAVail"> <span class="entypo-plus-squared"></span> ADD Availability</a>
里面有一个标准的 格式,是 在form 端肯定需要的代码,如果 包含一个类型的 并且type =submit 的时候,他可以自己跳转到对应的form地址
<form id="tenant-form" method='POST' enctype='multipart/form-data' onsubmit="javascript: return submit_confirm();" >
具体怎么跳转呢?? ? 好像没有搞清楚 —-
<div class="row"> <div class="form-actions" style="margin:10px 0 0 15px;"> <input type="submit" class="btn btn-primary" id="submit1" name="submit1" value="{{ ui_setting.Submit }}"></input> <input type="reset" class="btn btn-default" value="{{ ui_setting.Reset }}"></input> <input type="button" class="btn" onclick="goBack()" value="{{ ui_setting.Back }}"></input> </div> </div>
form 端,增加了两个在 数据库中不存在的列,用在传输的过程中,但是现在这个好像没怎么用到了,等以后使用的时候再说吧
class TenantForm(ModelForm): class Meta: model = Tenant AvailabilityName =forms.CharField(label='AvailabilityName') AddNewAvailabilityName =forms.CharField(label='AddNewAvailabilityName') fields = form_setting.form_sets.tenant_form #+['AvailabilityName','AddNewAvailabilityName'] widgets = {'TenantSettle':forms.Select(choices=tenant_settle_choices), 'TenantStatus':forms.Select(choices=tenant_status_choices) } tenant_fields_required = ['TenantName', #'TenantStatus' 'TenantSettle', 'TenantStartDate', 'TenantEndDate'] def __init__(self, *args, **kwargs): super(TenantForm, self).__init__(*args, **kwargs) for key in self.fields: self.fields[key].error_messages=my_default_errors tenant_fields_required = getattr(self.Meta, 'tenant_fields_required', None) if tenant_fields_required: for key in self.fields: if key not in tenant_fields_required: self.fields[key].required = False
修改location 增加一个函数的方式,下拉框的形式
还没有说清楚 leon
1.pull 一个新的版本 ,
2. 我需要把SSH 的换一下
3. 始终带着brand_id ,理解critcal id, www.sina/11/?a=12, 除了delete,edit 方式的都不需要带着id ,
4.migrate 里面的 0001.initial.py ,
ManyToMany 的类型,company[brands],
brand__id__exact = int(brand_id)这边需要理解下 brand __id 而不是用brand.id 的方式,因为 rand__id 是有多个,所以brand.id 是取不到的 ,这样的方式是onetomany 的方式
view_company_contact 的逻辑顺序是
如果传过来的request里面有company_id
if request.GET.get('company_id'):
再去判定传过来的company_id 是不是为空
if company_id:
如果存在,就通过company_id 找到对应的 company ,如果传进来的值为空,就通过brand_id 去查看brand 下面的公司(可能有多个,),
然后得到brand 下 所有公司的 company_contacts 查看 ,
返回对应的
message_for_add_result = views.messageProducer(request)是什么意思?
返回的时候都要带着brand_id ,company_id带着走 ,
return render_to_response('contact/contact_view.html', {'company_contacts':company_contacts, 'company_id':company_id, 'brand_id':brand_id, 'message_for_add_result': message_for_add_result}, context_instance = RequestContext(request))
@login_required def view_company_contact(request): brand_id = request.GET.get('brand_id') if request.GET.get('company_id'): company_id = request.GET.get('company_id') if company_id:# ensure not null companies = [get_object_or_404(Company,pk=int(company_id))] #contains only one object else:#find by brand_id ,brand__id exact 表示 包含的意思, companies = Company.objects.filter(brand__id__exact = int(brand_id)) company_id = "" else: companies = Company.objects.filter(brand__id__exact = int(brand_id)) company_id = "" company_contacts = Company_Contact.objects.filter(Q(Company__in = companies)) message_for_add_result = views.messageProducer(request) return render_to_response('contact/contact_view.html', {'company_contacts':company_contacts, 'company_id':company_id, 'brand_id':brand_id, 'message_for_add_result': message_for_add_result}, context_instance = RequestContext(request))
重用id 判断company_id = “” 是不是为空,如果是空的话,说明你是brand_id ,不允许你add company ,
首先应该判定又没有company_id ,同时我要一直带着brand_id ,
form = Company_Contact_Form()
1 第一次进入输入界面,需要传一个空的数据
2
request.method == 'POST':表示你提交的动作,当一个按钮是submit 的时候,url 不变,重新通过路由
如果提交失败,
form = Company_Contact_Form(request.POST)表示用户提交的值,然后判定是不是符合form的定义
4.
form.is_valid(): 表示数据是正确的
form.save()
HttpResponseRedirect会改变用户的brand_id,company_id,但是
render_to_response
@login_required def add_company_contact(request): company_id = request.GET.get('company_id') company_instance=get_object_or_404(Company,pk=int(company_id)) brand_id = request.GET.get('brand_id') form = Company_Contact_Form() if request.method == 'POST': form = Company_Contact_Form(request.POST) if form.is_valid(): company_contact_instance = Company_Contact.objects.create(Company=company_instance) form = Company_Contact_Form(request.POST, instance=company_contact_instance) form.save() return HttpResponseRedirect("/contact/view_contact/?company_id=%s&brand_id=%s&message=success" % (company_id,brand_id)) message_for_add_result = "fail" return render_to_response('contact/contact_add.html', {'form': form, 'company_id':company_id, 'message_for_add_result': message_for_add_result}, context_instance = RequestContext(request)) message_for_add_result = "null" return render_to_response('contact/contact_add.html', {'form': form, 'company_id':company_id, 'message_for_add_result': message_for_add_result}, context_instance = RequestContext(request))
edit_company_contact得到的方式是这样子的,
form=Company_Contact_Form(instance=company_contact_instance)初始化 需要编辑界面的值,
if request.method == 'POST':表示提交了表单,
form = Company_Contact_Form(request.POST, instance=company_contact_instance)表示重新加载了表单,然后
@login_required def edit_company_contact(request, contact_id): company_contact_instance=get_object_or_404(Company_Contact,pk=int(contact_id)) company_id = company_contact_instance.Company.id brand_id = request.GET.get('brand_id') form = Company_Contact_Form(instance=company_contact_instance) if request.method == 'POST': form = Company_Contact_Form(request.POST, instance=company_contact_instance) if form.is_valid(): company_contact_instance=form.save() company_contact_instance.save() if request.GET.get('company_id'): return HttpResponseRedirect("/contact/view_contact/?company_id=%s&brand_id=%s&message=success" % (company_id,brand_id)) else: return HttpResponseRedirect("/contact/view_contact/?brand_id=%s&message=success" % brand_id) message_for_add_result = "fail" return render_to_response('contact/contact_add.html', {'form': form, 'message_for_add_result': message_for_add_result}, context_instance = RequestContext(request)) message_for_add_result = "null" return render_to_response('contact/contact_add.html', {'form': form, 'message_for_add_result': message_for_add_result}, context_instance = RequestContext(request))
delete ,
return HttpResponseRedirect("/contact/view_contact/?brand_id=%s&message=success" % brand_id)最后一句传参数是为了回到原来的brand_id 的方式
@login_required def delete_company_contact(request, contact_id): brand_id = request.GET.get('brand_id') company_contact_instance=get_object_or_404(Company_Contact,pk=int(contact_id)) company_id = company_contact_instance.Company.id company_contact_instance.delete() if request.GET.get('company_id'): return HttpResponseRedirect("/contact/view_contact/?company_id=%s&brand_id=%s&message=success" % (company_id,brand_id)) else: return HttpResponseRedirect("/contact/view_contact/?brand_id=%s&message=success" % brand_id)
相关文章推荐
- 7.22-7.23 JLL实习日志-ManytoMany模型+python中 reload 函数
- 5.28-5.30 JLL--实习日志--js.mask()和bootstrapValidator()验证函数
- 4.29 JLL_实习日志
- 5.4 JLL 实习日志 –form 表单问题
- 6.5 JLL--实习日志
- 6.16-6.19 JLL--实习日志--
- 6.15 JLL--实习日志--SetupNewWorkSpace on cloud9
- 结合实例实习F#(三)--理解函数式语言中的函数
- 7.3-7.5 JLL实习日志-实现DropDownBox的功能
- 5.31 JLL--实习日志--EDIT 过期数据+2个问题
- 6.27-6.28 JLL--实习日志Tips for Horizon+ retail_interface
- 5.5 JLL 实习日志
- 5.12 JLL实习日志-实现Anjular Js 功能实现
- 5.12 JLL实习日志-实现download功能实现
- 6.1-6.4 JLL--实习日志--filter_box,复选框+basic function
- 5.3 JLL 实习日志
- 5.10 JLL实习日志-实现upload 功能实现
- 5.19 JLL--实习日志--view_availability前端和后端
- 6.7-6.9 JLL--实习日志--googleAPI+Heat Map+update修改
- 6.29-6.30 LL--实习日志--Restful API 概念理解+Restful_API编写