您的位置:首页 > 大数据 > 人工智能

6.20 JLL--实习日志-- teneat关联Availabilty,retail 增删改插的函数理解

2017-06-21 18:42 369 查看
1.实现170 的功能

实现一个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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: