Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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的OneToOneField参考另一个表';s id字段?_Python_Django - Fatal编程技术网

Python 不';Django的OneToOneField参考另一个表';s id字段?

Python 不';Django的OneToOneField参考另一个表';s id字段?,python,django,Python,Django,我认为模型。在本例中,OneToOneField是指组表的id字段。 但是,通过我的views.py,该组的id==6,但如果在组的id==2、3和4时我不上传图像,则会发生组封面的Group\u id==3 对不起,我的英语很奇怪。 简言之,我认为当组id为6时,Django在组封面的组id中设置6 models.py @python_2_unicode_compatible class Group(models.Model): #group_id = models.AutoFiel

我认为
模型。在本例中,OneToOneField
是指
表的id字段。 但是,通过我的
views.py
,该组的
id==6
,但如果在组的
id==2、3和4
时我不上传图像,则会发生组封面的
Group\u id==3

对不起,我的英语很奇怪。 简言之,我认为当组id为6时,
Django
在组封面的组id中设置6

models.py

@python_2_unicode_compatible
class Group(models.Model):

    #group_id = models.AutoField(primary_key=True)
    group_name = models.CharField(max_length=50, unique=False, blank=False)

    class Meta:
        db_table = traceback.extract_stack()[-2][2].lower()


@python_2_unicode_compatible
class Group_Cover(models.Model):

    group = models.OneToOneField(Group, primary_key=True)
    group_cover = models.ImageField(upload_to="static/image/group/")

    class Meta:
        db_table = traceback.extract_stack()[-2][2].lower()
views.py

@login_required(login_url='/')
def group_register(request):

    import pdb; pdb.set_trace()
    from myapp.forms import GroupRegister
    from myapp.forms import GroupCover
    formset = GroupRegister
    formcover = GroupCover

    if request.method == 'POST':
        form = formset(request.POST)
        cover = formcover(request.POST)

        if form.is_valid():
            from myapp.models import Group
            new_group = Group()
            new_group.group_name = form.cleaned_data['group_name']
            new_group.save()

            from myapp.models import Group_Cover
            new_cover = Group_Cover()
            new_cover.group_cover = request.FILES['group_cover']
            new_cover.save()

            return redirect('/myapp/group_page/{}'.format(new_group.id))

    else:
        form = formset()
        cover = formcover()

    view = { 
        'form': form,
        'cover': cover,
    }
    template = 'myapp/group/group_register.html'
    return render(request, template, view)

您需要将
Group
实例分配给
Group\u封面
one。大致如此:

   if form.is_valid():
        from myapp.models import Group
        new_group = Group()
        new_group.group_name = form.cleaned_data['group_name']
        new_group.save()

        from myapp.models import Group_Cover
        new_cover = Group_Cover()
        new_cover.group_cover = request.FILES['group_cover']

        new_cover.group = new_group # This line assigns it

        new_cover.save()

您在初始化
组\u Cover
时未指定组

而不是以下代码:

new_cover = Group_Cover()
使用以下命令:

new_cover = Group_Cover(group=new_group)

需要告诉Django你指的是哪一组(见
group=new\u group

啊,我明白了。谢谢你Sudip Kafle谢谢你Vladir Parrado Cruz。我不知道。我现在试试。非常感谢。
new_cover = Group_Cover(group=new_group)
new_cover.group_cover = request.FILES['group_cover']
new_cover.save()