Python 使用函数修改数据表UserProfile中的值
我正在尝试运行.save()来更改用户模型字段的值 这是我的密码: Views.py:Python 使用函数修改数据表UserProfile中的值,python,django,django-models,django-views,Python,Django,Django Models,Django Views,我正在尝试运行.save()来更改用户模型字段的值 这是我的密码: Views.py: def traffic_task(request): tasks_traffic = Task.objects.filter(category="traffic") random_task = random.choice(tasks_traffic) task_id = random_task.pk user = request.user user.userprofil
def traffic_task(request):
tasks_traffic = Task.objects.filter(category="traffic")
random_task = random.choice(tasks_traffic)
task_id = random_task.pk
user = request.user
user.userprofile.daily_task = task_id
user.save()
return task_detail(request=request, pk=task_id)
Models.py
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
daily_task = models.IntegerField(default=0)
daily_task_done = models.BooleanField(default=False)
daily_task_done_time = models.DateTimeField(default=datetime.now() - timedelta(days=2))
它们位于两个不同的应用程序中,因此可能缺少导入?您应该保存
UserProfile
对象,而不是User
对象,因此类似于:
def traffic_task(request):
tasks_traffic = Task.objects.filter(category="traffic")
random_task = random.choice(tasks_traffic)
task_id = random_task.pk
userprofile = request.user.userprofile
userprofile.daily_task = task_id
# perhaps you want to set daily_task_done to False here
userprofile.save()
return task_detail(request=request, pk=task_id)
然后可以使用任务对象,如:
def traffic_task(request):
tasks_traffic = Task.objects.filter(category="traffic")
random_task = random.choice(tasks_traffic)
userprofile = request.user.userprofile
userprofile.daily_task = random_task
userprofile.save()
return task_detail(request=request, pk=task_id)
def traffic_任务(请求):
tasks\u traffic=Task.objects.filter(category=“traffic”)
随机任务=随机。选择(任务和流量)
userprofile=request.user.userprofile
userprofile.daily\u task=随机任务
userprofile.save()
返回任务详细信息(请求=请求,主键=任务id)
这样可以创建额外的验证,但使用任务对象也更方便,如果您想批量获得任务s,可以使用。选择相关(…)
,或。预取相关(…)
(虽然也可以使用整型字段来完成此操作,但它需要额外的逻辑,因此不那么优雅)。您应该保存用户配置文件,而不是用户
。此外,日常任务
应该是外键
,以执行任务
。谢谢!这很有帮助:)daily_任务只是用户当天将呈现的任务的引用。
def traffic_task(request):
tasks_traffic = Task.objects.filter(category="traffic")
random_task = random.choice(tasks_traffic)
userprofile = request.user.userprofile
userprofile.daily_task = random_task
userprofile.save()
return task_detail(request=request, pk=task_id)