【问题标题】:Django 1.8 Use field from "parent" model in "child" Foreign Key lookupDjango 1.8 在“子”外键查找中使用“父”模型中的字段
【发布时间】:2015-12-09 09:34:39
【问题描述】:

我想在它的“child”外键中使用“parent”模型中的字段。这是我的 3 个模型:

class Question(models.Model):
    bankno = models.IntegerField(db_column='BankNo',null=False)
    questionno = models.IntegerField(db_column='QuestionNo',null=False)
    question = models.CharField(db_column='Question', max_length=300)

class Questionaire(models.Model):
    bankno = models.IntegerField(db_column='BankNo')

class Response(models.Model):
    questionaire= models.ForeignKey(Questionaire)
    question = models.ForeignKey(Question)
    response = models.TextField(db_column='Response', blank=True, null=True)

我尝试在 Response 类中使用它:

    question = models.ForeignKey(Question, Questionaire__bankno)

但我明白了

“未定义名称'Questionaire__bankno'”

我试过了:

    question = models.ForeignKey(Question, Questionaire.bankno) - and
    question = models.ForeignKey(Question, Questionaire.objects.bankno)

我明白了

"AttributeError: type object 'Questionaire' 没有属性 'bankno'"

感谢您对此的任何帮助。

【问题讨论】:

  • 您的 Response 类中已经有 Question 的外键。你想做什么?
  • 嘿,我有多个问卷,具体取决于所选的问题库。如果用户选择银行 1,我希望问卷显示这些问题,等等 2、3、4。我认为最简单的方法是使用外键。如果你能想到另一种方法来做到这一点,我会全力以赴。干杯

标签: python django django-orm django-1.8


【解决方案1】:

在 Questionaire 中向 Questions 添加多对多关系。

class Questionaire(models.Model):
    bankno = models.IntegerField(db_column='BankNo')
    questions = models.ManyToManyField(Questions)

通过这种关系,您将获得特定银行编号中的所有问题。

【讨论】:

  • 好的,我对此感到困惑。当用户进入时,问卷将打开(他们输入他们的个人信息),然后选择题库。 (1-20)。问卷 (id) 和响应之间存在一对多的关系(每个问题 1 条记录(50 个问题))。我只想在他们更改银行编号时改变问题。也许最好的方法是将 BankNo 移动到响应模型并添加一个 AdminAction 来更改 Banks....hmmm
猜你喜欢
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-25
  • 1970-01-01
  • 2018-03-12
  • 1970-01-01
  • 2021-08-27
相关资源
最近更新 更多