2013-06-03 53 views
0

我正在构建一个Django应用程序与遗留数据库。我有一个模型,LIST,它来自那个传统数据库,不能真正改变。我也使用标准的Django用户模型。理想情况下,这是我想要发生的事情。用户注册后,注册后重定向创建一个新的LIST对象。一旦创建了新的列表对象,用户就会重定向到包含刚刚创建的LIST对象的数据的视图。一次后续登录,用户将被带回包含它们创建的LIST对象的数据的视图。截至目前我已经扩展了用户模型是这样的:Django - 只显示对象创建用户

​​

我ListForm看起来是这样的:

class ListForm(ModelForm): 
    error_css_class = 'text-error' 
    required_css_class = 'text-required' 

    class Meta: 
     model = models.List 
     fields = ('t_handle', 'facebook_id', 'pinterest_id', 'yelp_id', 'foursquare_id', 'yipit_id',) 

我views.py看起来是这样的:

def user_signup(request): 
    if request.method == 'POST': 
     form = forms.UserSignupForm(data=request.POST) 
     if form.is_valid(): 
      user = form.save() 
      g = Group.objects.get(name='test_group') 
      g.user_set.add(user) 
      # log user in 
      username = form.cleaned_data['username'] 
      password = form.cleaned_data['password1'] 
      user = authenticate(username=username, password=password) 
      login(request, user) 
      messages.success(request, u'Welcome to Social FollowUp') 
      return redirect('user_create') 
    else: 
     form = forms.UserSignupForm() 
    return TemplateResponse(request, 'user_signup.html', { 
     'form': form, 
    }) 

@login_required 
@permission_required('') 
def user_create(request): 
    if request.method == 'POST': 
     list_form = forms.ListForm(request.POST) 
     if list_form.is_valid(): 
      list_create = list_form.save() 
      messages.success(request, 'List {0} created'.format(list_create.list_id)) 
      return redirect(reverse('user_dashboard', args=(2,))) # 2 is just an example 
    else: 
     list_form = forms.ListForm() 

    return TemplateResponse(request, 'dashboard/create.html', {'list_form': list_form,   }) 


def user_dashboard(request, list_id): 
    try: 
     list_id = models.List.objects.get(pk=list_id) 
    except models.List.DoesNotExist: 
     raise Http404 
    return TemplateResponse(request, 'dashboard/view.html', {'list_id': list_id}) 

最后我的urls.py包含这个:

url(r'user/signup/$', views.user_signup, name='user_signup'), 
url(r'u/dashboard/(?P<list_id>\d+)/$', views.user_dashboard, name='user_dashboard'), 
url(r'u/list/create/$', views.user_create, name='user_create'), 

基本上我不知道如何让我想要发生的事情发生。每当用户注册并创建一个LIST对象时,list_id都不会保存到我创建的userProfile表中。我甚至不确定我需要那张桌子。有人可以帮我在这里吗?

+0

您的ListForm如何查看? – karthikr

+0

我刚刚更新了我的ListForm的帖子。 –

回答

2

在你user_create视图,

def user_create(request): 
    if request.method == 'POST': 
     list_form = forms.ListForm(request.POST) 
     if list_form.is_valid(): 
      list_create = list_form.save() 
      messages.success(request, 'List {0} created'.format(list_create.list_id)) 
      up, _ = UserProfile.objects.get_or_create(user=request.user, list_id=list_create) 
      return redirect(reverse('user_dashboard', args=(2,))) # 2 is just an example 

    #rest of the code 

基本上,所有你需要做的就是创建一个用户配置文件对象。

+1

我收到'全球名称'UserProfile'未定义'错误。我在我的view.py文件中导入模型。我错过了什么? –

+0

你需要做'从模型导入UserProfile' – karthikr

+1

太棒了!一般说明:为什么我必须专门导入该模型,即使我正在导入模型?我添加后,并从我的models.py文件中删除信号,它工作得很好。感谢最近帮助我,感谢它! –