python - Django:更新或更改以前保存的模型数据

标签 python django database model updates

我的 forms.py 中有这段代码

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

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

    # Count the referrer's direct referrals
    ref_recruits = DirectReferral.objects.filter(referrer=ref_user).count()

    # Get newly created direct referral
    get_ref = DirectReferral.objects.get(name=user)

    #Check if ref_recruits is not divisible by 2 or paired
    if ref_recruits % 2 != 0:

        # Newly created direct referral is_paired is False
        get_ref.is_paired = False
        get_ref.save()

    else:

        # Newly created direct referral is_paired is True
        get_ref.is_paired = True
        get_ref.save()

        # But I also want to update the previous is_paired to True 
        # of the same referrer

How do I update the previous is_paired to True of the same referrer?

查看下图可以更好地理解我的意思。 enter image description here 我希望你明白。

models.py(请求)

class DirectReferral(models.Model):
    name = models.OneToOneField(settings.AUTH_USER_MODEL, primary_key=True)
    referrer = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="direct_referrals")
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
    is_paired = models.NullBooleanField(null=False)

最佳答案

我认为你应该重构你的代码。根据您的实现,我相信“DirectReferral”的 name 字段将是唯一的。

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

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

# Count the referrer's direct referrals
ref_recruits = DirectReferral.objects.filter(referrer=ref_user).count()

# Get newly created direct referral
get_ref = DirectReferral.objects.get(name=user)

#Check if ref_recruits is not divisible by 2 or paired
if ref_recruits % 2 == 0:
    get_ref.is_paired = True
    DirectReferral.objects.filter(referrer=ref_user, is_paired=False).update(is_paired=True)
else:
    get_ref.is_paired = False
get_ref.save()

关于python - Django:更新或更改以前保存的模型数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36740478/

相关文章:

python - 使用pyxll将python集成到excel中...... lxml模块有问题

django - 由于 gdal 库,heroku push 被拒绝

Django-rest-framework 嵌套 url 与 drf-nested-routers

python - get_by_natural_key 和 natural_key 的区别

php - MySQL - PHP Select - 不显示变音符号

python - 如何将默认值写入列,其中默认值是从使用另一个列的函数创建的值?

python - Django ImportError : No module named tango_with_django_project. 设置

python - 将函数结果附加到数据框

database - TCP 连接和 Tomcat

mysql - SQL:将 1 个表中的 2 行合并为 1 行导致子查询的多行