【问题标题】:Django: Get model field data from a model field dataDjango:从模型字段数据中获取模型字段数据
【发布时间】:2016-08-11 11:44:15
【问题描述】:

我在views.py 中有类似的东西。

    if form.is_valid():

        ref_user = User.objects.get(
        username=form.cleaned_data['referrer'])

        if User.objects.filter(username=ref_user).exists():

            user = User.objects.create_user(
            username=form.cleaned_data['username']
            )   

            direct = DirectReferral.objects.create(
                name = user,
                referrer = ref_user # New created referrer
            )

            if DirectReferral.objects.filter(referrer=ref_user).exists():

                # Get the referrer of the newly created referrer in DirectReferral database

                indirect = IndirectReferral.objects.create(
                    name = user,
                    referrer = # This should be the referrer of the newly created referrer
                )

如何查询或获取新创建的引荐来源网址 推荐人?

要进一步理解我的意思,请查看下面的图片。

希望你能理解我的问题。

【问题讨论】:

  • 在您的视图中您的评论上方大约 5 行的操作方式与此相同?

标签: django django-models django-database django-datatable


【解决方案1】:

我猜代码中有些错误。

如果 form.is_valid():

    ref_user = User.objects.get(
    username=form.cleaned_data['referrer'])

    if User.objects.filter(username=ref_user).exists():

        user = User.objects.create_user(
        username=form.cleaned_data['username']
        )   

        direct = DirectReferral.objects.create(
            name = user,
            referrer = ref_user # New created referrer
        )

        if DirectReferral.objects.filter(referrer=ref_user).exists():

            # Here you are checking for something you just created. 
            # I guess this should be 
            # DirectReferral.objects.filter(name=ref_user).exists()

            # Get the referrer of the newly created referrer in DirectReferral database

            indirect = IndirectReferral.objects.create(
                name = user,
                referrer = # This should be the referrer of the newly created referrer
            )

如果你打算找到当前创建用户的推荐用户的推荐人,你可以这样做。

如果 form.is_valid():

    ref_user = User.objects.get(
    username=form.cleaned_data['referrer'])

    if User.objects.filter(username=ref_user).exists():

        user = User.objects.create_user(
        username=form.cleaned_data['username']
        )   

        direct = DirectReferral.objects.create(
            name = user,
            referrer = ref_user # New created referrer
        )

        try:
            referral_of_ref_user = DirectReferral.objects.get(name=ref_user).referrer
        except DirectReferral.DoesNotExist:
            # Do what needs to be done if direct referral not exist.
            print "No referrer"
            # Get the referrer of the newly created referrer in DirectReferral database
        else:
            indirect = IndirectReferral.objects.create(
                name = user,
                referrer = referral_of_ref_user
            )

编辑:

通过对您的代码进行最少的修改:

如果 form.is_valid():

    ref_user = User.objects.get(
    username=form.cleaned_data['referrer'])

    if User.objects.filter(username=ref_user).exists():

        user = User.objects.create_user(
        username=form.cleaned_data['username']
        )   

        direct = DirectReferral.objects.create(
            name = user,
            referrer = ref_user # New created referrer
        )

        if DirectReferral.objects.filter(name=ref_user).exists():

            # Get the referrer of the newly created referrer in DirectReferral database

            indirect = IndirectReferral.objects.create(
                name = user,
                referrer = DirectReferral.objects.filter(name=ref_user)[0].referrer
            )

【讨论】:

  • 谢谢!有效。不知道我可以做类似DirectReferral.objects.get(name=ref_user).referrer 的事情。您有此类查询的文档吗?
  • 这段代码只是一个普通的查询。如果 DirectReferral 的名称不是唯一的,则可能会出现另一个异常。您也必须捕获 DirectReferral.MultipleObjectsReturned 异常。
猜你喜欢
  • 2020-10-20
  • 2011-07-31
  • 2021-11-13
  • 1970-01-01
  • 2020-07-07
  • 1970-01-01
  • 2018-05-03
  • 2011-02-04
  • 2021-11-27
相关资源
最近更新 更多