【问题标题】:django forms instancedjango 表单实例
【发布时间】:2010-06-07 11:42:01
【问题描述】:

我有一种方法可以保存来自用户的数据,但每个用户都必须有一个配置文件,因此每次保存时,数据都应该被覆盖。 首先,我验证他是否已经有个人资料数据,在这种情况下,我将一个实例添加到表单中。如果没有,(这是他的第一次注册),我只需将数据添加到数据库中 我的代码是: 但我得到一个错误:'QuerySet' 对象没有属性'_meta' 我的方法对吗?谢谢!

def save_userprofile(request):

   if request.method == 'POST':
        u = UserProfile.objects.filter(created_by = request.user)
        if u:

             form = UserProfileForm(request.POST, request.FILES,instance=u ) 
        else:
             form = UserProfileForm(request.POST, request.FILES)

【问题讨论】:

    标签: django forms instance


    【解决方案1】:

    如果您希望从查询中返回一个对象,您应该使用get() 方法。

    from django.core.exceptions import ObjectDoesNotExist
    try:
        u = UserProfile.objects.get(created_by = request.user)
        # can update here
    except ObjectDoesNotExist:
        # create object
    

    queryset reference 应该解释一切。您可能还会发现get_or_create() 很有用。

    【讨论】:

      【解决方案2】:

      UserProfileForminstance 参数不希望收到 QuerySet,这就是你给它的。要检索配置文件,您应该使用它,它返回单个 UserProfile 对象:

      u = UserProfile.objects.get(created_by = request.user)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-01
        • 2015-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-24
        • 1970-01-01
        相关资源
        最近更新 更多