这里我有两个模型:
头像
成员
ProfilePic 的用户变量扩展自成员(member)的用户名(这样我就可以在数据库中为所有其他表单和模型使用一个用户名)。
现在ProfilePic作为一个表单,在我的views.py中我要添加:
member_obj = Member.objects.get(pk=用户名)
到我的 ProfilePic 表格。但是,当我运行我的代码时,它没有给出错误,但它也没有在数据库中呈现信息。所以我对这里发生的事情感到困惑。
我做错了什么?提前致谢!
# models.py
class ProfilePic(models.Model):
user = models.ForeignKey(Member, related_name='%(class)s_user', null=True)
text = models.TextField(max_length=4096)
thumbnail = models.FileField(upload_to='media', null=True)
class Member(models.Model):
username = models.CharField(max_length=16, primary_key=True)
password = models.CharField(max_length=16)
profile = models.OneToOneField(Profile, null=True)
following = models.ManyToManyField("self", symmetrical=True)
# forms.py
from django import forms
from .models import ProfilePic
class UploadFileForm(forms.ModelForm):
class Meta:
model = ProfilePic
fields = ['text','thumbnail']
# views.py
def profile(request):
username = request.session['username']
member_obj = Member.objects.get(pk=username)
if request.POST:
invitations = Invitation.objects.filter(to_user=username)
form = UploadFileForm(request.POST,request.FILES, instance=member_obj)
form.save()
picture = ProfilePic.objects.all()
return render(request, 'social/profile.html', {
'appname': appname,
'username': username,
'invitations':invitations,
'picture' : picture,
'form' : form,
'loggedin': True}
)
请您参考如下方法:
您正在将 Member 实例传递给 ProfilePic 模型表单。
你要做的是:
form = UploadFileForm(request.POST, request.FILES,
instance=member_obj.profile_pic_user)
所以你得到了一个ProfilePic实例。
