1
我想知道他們將IntegerField中的列轉換爲外鍵的最佳步驟。這裏是我的兩個型號:將外鍵添加到Django模型
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'")
我認爲這是我的模型代碼中的一個問題,但我不確定這可能是視圖問題。
感謝您的幫助!
我一定要改變我的兩個表,並添加這些列? – 2012-07-25 01:27:55
您不必更改基礎SQL表。你可以這樣做:'userid = models.IntegerField()'到'user = models.ForeignKey(User,db_column ='userid')''。 – 2012-07-25 01:32:03
好吧,一切工作正常,除了這一件事,它不喜歡order_by(workout__workoutdate)。它說沒有一個全球性的名字'workout__workoutdate'沒有定義 – 2012-07-25 01:55:56