我需要ModelForm
在同一视图中将主键从新创建的字段传递到另一个表单字段,但是我收到错误.有什么建议使这项工作?看起来在过去,这将是答案:
def contact_create(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse(contact_details, args=(form.pk,)))
else:
form = ContactForm()
Run Code Online (Sandbox Code Playgroud)
从文档中,这是较新的Django版本中发生的事情 > 1.8.3
p3 = Place(name ='Demon Dogs',address ='944 W. Fullerton')Restaurant.objects.create(place = p3,serve_hot_dogs = True,serve_pizza = False)
Traceback(最近一次调用最后一次):
...
ValueError :save()禁止防止因未保存的相关对象'place'而导致数据丢失.
这就是我pk
从视角中获取的方式:
my_id = ""
if form.is_valid():
# deal with form first to get id
model_instance = form.save(commit=False)
model_instance.pub_date= timezone.now()
model_instance.user= current_user.id
model_instance.save()
my_id = model_instance.pk
if hourformset.is_valid():
hourformset.save(commit=False)
for product in hourformset:
if product.is_valid():
product.save(commit=False) …
Run Code Online (Sandbox Code Playgroud) {"id":"2231f87c-a62c-4c2c-8f5d-b76d11942301"}
Run Code Online (Sandbox Code Playgroud)
如果我提醒响应数据,我看到上面的内容,我该如何访问该id
值?
我的控制器返回如下:
return Json(
new {
id = indicationBase.ID
}
);
Run Code Online (Sandbox Code Playgroud)
在我的ajax成功中我有这个:
success: function(data) {
var id = data.id.toString();
}
Run Code Online (Sandbox Code Playgroud)
它说data.id
是undefined
.
我正在制作一个投票系统,它将在网站周围的多个组件中重复使用.为了保持其干燥,我想从任何组件创建投票组件,到指定的DOM元素..组件已被创建后,实例变量必须设置(在这种情况下model:string
和pk:number
,公共).
我希望组件在指定位置呈现,打印在工厂创建组件后立即设置的正确数据.投票底部的输出应该是Model: project PK: 1
ComponentFactory目前有两个由Component工厂创建的投票组件的输出:
在正确的位置(目标div),但没有设置实例变量.
在页面的底部,但这是另一个问题,在以后的时间和其他主题.
@NgModule({
..
declarations: [
AppComponent,
ProjectComponent, // parent for voteContainer
VoteComponent, // Dynamic component
],
entryComponents: [
VoteComponent,
], ..
})
Run Code Online (Sandbox Code Playgroud)
包含VoteComponent工厂的父组件
export class ProjectDetailComponent implements AfterViewInit {
@ViewChild('voteComponentContainer', {read: ViewContainerRef}) voteComponentContainer;
public ngAfterViewInit() {
this.factoryVoteComponent();
}
private factoryVoteComponent() {
const voteComponentFactory = this.componentFactoryResolver.resolveComponentFactory(VoteComponent);
const voteComponentRef = this.viewContainerRef.createComponent(voteComponentFactory);
voteComponentRef.instance.model = "project";
voteComponentRef.instance.pk = 1;
voteComponentRef.changeDetectorRef.detectChanges();
}
}
Run Code Online (Sandbox Code Playgroud)
动态组件目标:
<vote-component-container></vote-component-container>
Run Code Online (Sandbox Code Playgroud)
基本投票组件
@Component({ …
Run Code Online (Sandbox Code Playgroud) 在我看来,新的编码员尝试适应 GoogleMap。
我搜索了很多信息,得出了这个结论,但它对我不起作用。
覆盖 func loadView() {
var markerList = [GMSMarker]()
// Create a GMSCameraPosition
let camera = GMSCameraPosition.camera(withLatitude: 4.390205, longitude: 2.154007, zoom: 8)
let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
mapView.isMyLocationEnabled = true
view = mapView
mapView.settings.myLocationButton = true
//mapView.setMinZoom(10, maxZoom: 20)
//create markers
for loc in arrayOfMapStops {
let marker = GMSMarker()
marker.position = CLLocationCoordinate2D(latitude: loc.lat, longitude: loc.long)
marker.title = loc.address
marker.snippet = loc.type
if loc.type == "Entrega" {marker.icon = GMSMarker.markerImage(with: .green)}
else {marker.icon = GMSMarker.markerImage(with: .blue)}
marker.map …
Run Code Online (Sandbox Code Playgroud) 如上所述,只需检查是否有方法可以检查程序运行所在计算机的根字母(即C:\\
或)。S:\\
我不知道是否有内置的方法os
,或者我是否需要专门的功能。
我是斯卡拉新手。我在阅读有关闭包的内容时发现了闭包的定义:
“该名称源自通过“捕获”其自由变量的绑定来“关闭”函数文字的行为”。
这行代码实际上意味着什么?关闭到底有何帮助?它的用例是什么?
美好的一天!
我正在学习基于类视图的Django(1.8).Django本身提供了一个验证模块,可以更改用户的密码.在使用Django的 PasswordChangeForm(扩展Django的 SetPasswordForm)时,我偶然发现了以下错误:
init()缺少1个必需的位置参数:'user'
当我看一下SetPasswordForm类时,我可以看到它需要一个user-object作为参数.
def __init__(self, user, *args, **kwargs):
self.user = user
super(SetPasswordForm, self).__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
我最初做了什么?
首先,在我看来,我只是分配了Django的PasswordChangeForm:
class ChangePassword(LoginRequiredMixin, FormView):
template_name = 'users/reset_password.html'
form_class = PasswordChangeForm
Run Code Online (Sandbox Code Playgroud)
这当然导致了错误,因为没有提供用户对象.
那么我试图解决这个问题呢?
尝试一个:自定义表单,它继承自PasswordChangeForm并添加init方法.
由于PasswordChangeForm没有init方法,我创建了一个名为MyPasswordChangeForm的新表单类,它继承自PasswordChangeForm并添加了init:
class MyPasswordChangeForm(PasswordChangeForm):
def __init__(self, request, *args, **kwargs):
super(MyPasswordChangeForm, self).__init__(request.user, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
预期结果:MyPasswordChangeForm->继承自PasswordChangeForm并在SetPasswordForm中添加init-> super init-> perform init
实际结果:super正在调用LoginRequiredMixin:
init()缺少1个必需的位置参数:'
request'stack-tr l:80返回super(LoginRequiredMixin,self).dispatch(request,*args,**kwargs)
尝试"两个":次要更改 将super-> MyPasswordChangeFrom更改为super-> PasswordChangeForm
尝试三:使用mixin,但不幸的是有与上面相同的结果.
尝试四:尚未完成,但最终选择?但必须有一种方法尽可能多地使用django的形式.
所以我的问题是...... 有人可以通过Django的PasswordChangeForm对如何将(经过身份验证的)用户对象传递给Django的SetPasswordForm提供一个提示或小解释,因此我可以尽可能多地使用当前存在的表单.
提前致谢!
django ×2
python ×2
angular ×1
factory ×1
fitbounds ×1
forms ×1
google-maps ×1
inheritance ×1
javascript ×1
json ×1
markers ×1
python-3.x ×1
scala ×1
swift ×1
zooming ×1