Django ForeignKey Требуется? - PullRequest
       16

Django ForeignKey Требуется?

1 голос
/ 08 декабря 2010

У меня есть три класса:

class Location(models.Model):
    name = models.CharField(max_length = 200)

class Student(models.Model):
    name = models.CharField(max_length = 200)
    email = models.EmailField()

class Exam(models.Model):
    place = models.ForeignKey(Location)
    taker = models.ForeignKey(Student)
    score = models.DecimalField(max_digits = 5, decimal_places = 2)

Когда я запускаю это, он жалуется, что у ученика нет иностранного ключа к экзамену.Почему?

Ответы [ 3 ]

1 голос
/ 08 декабря 2010

Вы можете попробовать это в оболочке manage.py:

from bar import models
l=models.Location("here")
s=models.Student(name="fred",email="foo@bar.com")
e = models.Exam(place=l,taker=s,score=99.9)

, что я могу сделать без ошибок ... Выглядит хорошо для меня ..

1 голос
/ 08 декабря 2010

Похоже, что ваша фактическая база данных не синхронизирована с вашей моделью. Вы захотите либо удалить и заново создать базу данных, используя manage.py syncdb (проще всего, но вы потеряете данные, если не будете использовать что-то вроде фикстуры для перезагрузки исходных данных ) или не будете использовать инструмент миграции, такой как Юг для обновления существующей базы данных с учетом новой модели данных.

0 голосов
/ 08 декабря 2010

В файле admin.py у меня была настройка inlines = [StudentsInline]. Это пытается принудительно добавить несколько учеников к одному экзамену (думая, что это одна сторона отношений OneToMany).

...