Skip to main content
 首页 » 编程设计

python之使用一个模型中的变量并将其添加到 Django 中的表单中

2024年10月24日32bluestorm

这里我有两个模型:

  1. 头像

  2. 成员

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实例。