Как создать реляционную базу данных Django с четырьмя таблицами? - PullRequest
0 голосов
/ 21 января 2019

Я создаю сайт, используя Django, и у меня проблема с базой данных!У меня есть четыре таблицы (темы, вопросы, ответы и изображения).У каждой из этих таблиц есть столбец идентификатора, и я хотел бы соединить эти четыре таблицы.

Я пытался использовать ForeignKey(), но это не сработало.Я получаю сообщение об ошибке.Я не знаю, могу ли я использовать ManyToManyField() в этом случае, потому что я пытаюсь подключиться только к одному столбцу.

Это код:

from django.db import models

# Create your models here.
class topics(models.Model):
    topic_id = models.AutoField(primary_key=True)
    topic_level = models.BooleanField()
    topic_name = models.TextField()

class questions(models.Model):
    question_id = models.AutoField(primary_key=True)
    description = models.TextField()
    questions_type = models.BooleanField()


class answers(models.Model):
    answer_id = models.AutoField(primary_key=True)
    description = models.TextField()

class images (models.Model):
    image_id = models.AutoField(primary_key=True)
    image_blob = models.BinaryField()

Этоэто код с ForeignKey():

from django.db import models

# Create your models here.
class topics(models.Model):
    topic_id = models.AutoField(primary_key=True)
    topic_level = models.BooleanField()
    topic_name = models.TextField()
    topic_question = models.ForeignKey(questions, on_delete=CASCADE)
    topic_answer = models.ForeignKey(answers, on_delete=CASCADE)
    topic_image = models.ForeignKey(images, on_delete=CASCADE)


class questions(models.Model):
    question_id = models.AutoField(primary_key=True)
    description = models.TextField()
    questions_type = models.BooleanField()
    question_topic = models.ForeignKey(topics, on_delete=CASCADE)
    question_answer = models.ForeignKey(answers, on_delete=CASCADE)
    question_image = models.ForeignKey(images, on_delete=CASCADE)


class answers(models.Model):
    answer_id = models.AutoField(primary_key=True)
    description = models.TextField()
    answer_topic = models.ForeignKey(topics, on_delete=CASCADE)
    answer_question = models.ForeignKey(questions, on_delete=CASCADE)
    answer_image = models.ForeignKey(images, on_delete=CASCADE)

class images (models.Model):
    image_id = models.AutoField(primary_key=True)
    image_blob = models.BinaryField()
    image_topic = models.ForeignKey(topics, on_delete=CASCADE)
    image_question = models.ForeignKey(questions, on_delete=CASCADE)
    image_answer= models.ForeignKey(answers, on_delete=CASCADE)

И это сообщение об ошибке, которое я получаю:

topic_question = models.ForeignKey (questions, on_delete = CASCADE)NameError: имя 'questions' не определено

1 Ответ

0 голосов
/ 21 января 2019

В тот момент, когда вы пытаетесь использовать имя класса question для обозначения связанной модели, такой класс не определяется, как состояния ошибки. Когда вы ссылаетесь на модель, определенную позже в коде, вы должны заключить имя в "":

topic_question = models.ForeignKey("questions", on_delete=CASCADE)

Вот соответствующие документы: https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey

...