[英]Django OneToOneField and ForeignKeyField add “_id” suffix to the field
[英]Doesn't OneToOneField of Django refer another table's id field?
我認為models.OneToOneField
(在本例中為group字段)引用了Group
表的id字段。 但是,通過我的views.py
,當Group的id == 2, 3 and 4
時,如果我不上傳圖像,則該組的id == 6
但Group_Cover的group_id == 3
會發生。
對不起,我的英文很奇怪。 簡而言之,當Group的id為6時,我認為Django
在Group_Cover的group_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_Cover
。 或多或少如此:
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()
初始化Group_Cover
未指定組。
而不是代碼:
new_cover = Group_Cover()
使用以下內容:
new_cover = Group_Cover(group=new_group)
new_cover = Group_Cover(group=new_group)
new_cover.group_cover = request.FILES['group_cover']
new_cover.save()
需要告訴Django你所指的是哪個組(參見group=new_group
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.