gpt4 book ai didi

python - 添加外键到 Django 模型

转载 作者:太空宇宙 更新时间:2023-11-03 19:15:01 25 4
gpt4 key购买 nike

我想知道将列从 IntegerField 转换为外键的最佳程序是什么。这是我的两个模型:

class workout(models.Model):

userid = models.IntegerField()
datesubmitted = models.DateField()
workoutdate = models.DateField();
bodyweight = models.FloatField(null=True);
totalreps = models.IntegerField()
totalweight = models.FloatField()
numsets = models.IntegerField();
numexercises = models.IntegerField()
workoutname = models.CharField(max_length=250)

第二个:

class exercise(models.Model):  
userid = models.IntegerField();
workoutid = models.IntegerField();
exercisename = models.CharField(max_length = 100)
repetitions = models.IntegerField()
weight = models.FloatField()

最后是我的 django 查看代码:

user =User.objects.get(username = request.session['username']) #user 
dates = request.GET.getlist('datepickerfilter') # two dates
workout_ids = workout.objects.filter(userid=user.id).filter( workoutdate__gte = dates[0]).filter(workoutdate__lte = dates[1])
all_exercises = exercise.objects.filter(workoutid__in = workout_ids)

我想将锻炼模型中的“workoutid”列更改为与锻炼模型中的 id 字段相关的外键。我尝试将模型字段更改为:

workoutid = models.ForeignKey(workout);

然后将此 order_by 语句添加到我看来的 all_exercises 的末尾,即

all_exercises = exercise.objects.filter(workoutid__in = workout_ids).order_by("workoutid__workoutdate")

我收到一条错误消息:

(1054, "Unknown column 'tracking_exercise.workoutid_id' in 'field list'")

我认为这是我的模型代码中的问题,但我不确定这可能是 View 的问题。

谢谢各位的帮助!

最佳答案

您收到错误是因为锻炼_ids 不是 ID 列表。

解决当前问题的快速而简单的方法是使用 .values_list('id', flat=True) ,如下所示:

workout_ids = workout.objects.filter(userid=user.id).\
filter(workoutdate__gte=dates[0]).\
filter(workoutdate__lte=dates[1]).\
values_list('id', flat=True)

但是,我强烈建议使用models.ForeignKey。这是一个帮助您入门的简单示例:

class Workout:
user = models.ForeignKey(User)
# other fields go here...

class Exercise:
workout = models.ForeignKey(Workout)
# other fields go here...

然后你可以编写查询:

workout_list = Workout.objects.filter(user=request.user)
exercise_list = Exercise.objects.filter(workout__in=workout_list).order_by('workout__workoutdate')

关于python - 添加外键到 Django 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11641052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com