Python Django:更新或更改以前保存的模型数据
我在forms.py中有此代码Python Django:更新或更改以前保存的模型数据,python,django,database,model,updates,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 = D
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
我如何更新同一推荐人的上一个is_paired to True
检查下面的图片以更好地理解我的意思。
我希望你能理解
models.py(已请求)
您需要以某种方式对
directreference
对象进行排序,以便它们以正确的顺序返回,即最后添加的对象是directreference
对象列表中的第一个对象,然后您可以轻松更改列表中的第二个对象,在您的情况下是前一个对象
例如:
get_refs = DirectReferral.objects.filter(referrer=ref_user).ordery_by('-timestamp')
if ref_recruits % 2 != 0:
get_refs[0].is_paired = False
get_refs[0].save()
else:
get_refs[0].is_paired = True
get_refs[1].is_paired = True
get_refs[0].save()
get_refs[1].save()
我认为你应该重构你的代码。根据您的实现,“DirectReference”的
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()
你能显示DirectReferral模型代码吗?@Paul我添加了models.py。我尝试了这个,但我不知道为什么没有保存或更新is\u paired。它只在我的模型数据中返回一个问号。是的,每个refererrer只有一个唯一的DirectReference。
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()