我的 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?
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/