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