Django在未经过身份验证时使用queryset链接下拉列表

时间:2015-06-12 02:27:15

标签: python django

我在这里要完成的是如何在没有身份验证的情况下实际执行链式下拉列表。我已设法使用链式下拉列表创建一个表单,但这些表单与“当前用户”绑定。

现在我的问题是我需要完全相同,但在一个你不需要进行身份验证的表单上,我不知道如何处理下拉列表之间的关系。

models.py

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    business = models.ForeignKey(Business)
    role = models.ForeignKey(Role)
    telephone = models.CharField(max_length=20)
    title = models.CharField(max_length=60)

forms.py

class UserProfileForm(forms.ModelForm):
class Meta:
    model = UserProfile
    fields = ('business', 'role', 'telephone', 'title',)

views.py

def register(request):

if request.method == 'POST':
    profile_form = UserProfileForm(data=request.POST)

    # If the form is valid...
    if profile_form.is_valid():
        profile = profile_form.save(commit=False)
        profile.user = user

        # Now we save the UserProfile model instance.
        profile.save()

        # Redirect after succesful form submssion
        return HttpResponseRedirect('/home/')

    else:
        print (profile_form.errors)

else:
    profile_form = UserProfileForm()

return render(request,
              'home/register.html',
              {'profile_form': profile_form, 'registered': registered})

register.html

<form>
    {% csrf_token %}

    <div class="form-group">
        {{ profile_form | crispy }}
    </div>

    <input type="submit" name="submit" value="Register"/>
</form>

现在,当该网页被渲染时,我确实获得了业务和角色的下拉列表(所有这些),但我无法找到如何根据业务链接显示哪些角色。

希望我自己解释一下。

谢谢,

1 个答案:

答案 0 :(得分:0)

您应该根据另一个字段的选择更新相关字段。这需要在客户端发生。您将使用选项填充第一个字段,但将其他字段留空。 选择第一个选项后,您可以向服务器启动ajax请求,并检索前一个选项筛选的选项。这意味着你需要有一个url端点,它将以最适合你的格式(REST类似接口或渲染的html)返回给你。 获得结果后,您将填充必填字段,然后链接到下一个字段。记得绑定新生成的HTML,否则你将无法捕捉到这些动作。