小编Nrz*_*ine的帖子

禁止save()以防止由于未保存的相关对象而导致数据丢失

我需要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)

python django

34
推荐指数
2
解决办法
2万
查看次数

从响应中获取json值

{"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.idundefined.

javascript json

10
推荐指数
1
解决办法
10万
查看次数

ng4 componentFactory将它放在DOM目标中

我想做什么

我正在制作一个投票系统,它将在网站周围的多个组件中重复使用.为了保持其干燥,我想从任何组件创建投票组件,到指定的DOM元素..组件已被创建后,实例变量必须设置(在这种情况下model:stringpk:number,公共).

预期结果

我希望组件在指定位置呈现,打印在工厂创建组件后立即设置的正确数据.投票底部的输出应该是Model: project PK: 1

实际情况

ComponentFactory目前有两个由Component工厂创建的投票组件的输出:

  1. 在正确的位置(目标div),但没有设置实例变量. 此搜索

  2. 在页面的底部,但这是另一个问题,在以后的时间和其他主题.

一些代码

@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)

factory angular-components angular

5
推荐指数
1
解决办法
252
查看次数

Swift GoogleMaps fitBounds Zoom

在我看来,新的编码员尝试适应 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)

google-maps markers zooming fitbounds swift

3
推荐指数
1
解决办法
3056
查看次数

如何获取运行代码的计算机的 Windows 根目录?(Python)

如上所述,只需检查是否有方法可以检查程序运行所在计算机的根字母(即C:\\或)。S:\\

我不知道是否有内置的方法os,或者我是否需要专门的功能。

python python-3.x

3
推荐指数
1
解决办法
1183
查看次数

scala中闭包的使用

我是斯卡拉新手。我在阅读有关闭包的内容时发现了闭包的定义:

“该名称源自通过“捕获”其自由变量的绑定来“关闭”函数文字的行为”。

这行代码实际上意味着什么?关闭到底有何帮助?它的用例是什么?

scala

2
推荐指数
1
解决办法
1323
查看次数

无法将'user'参数传递给django中的ChangePasswordForm

美好的一天!

我正在学习基于类视图的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提供一个提示或小解释,因此我可以尽可能多地使用当前存在的表单.

提前致谢!

forms django inheritance class-based-views

0
推荐指数
1
解决办法
525
查看次数