【问题标题】:In Django, how to bind the dropdown list with data from another table using foreign key?在 Django 中,如何使用外键将下拉列表与另一个表中的数据绑定?
【发布时间】:2021-10-19 17:48:49
【问题描述】:
model.py

class LabTable(models.Model):
    LabNo = models.AutoField(primary_key=True)
    Pid = models.IntegerField()
    Weight = models.IntegerField()
    DoctorId = models.ForeignKey(DoctorTable,on_delete=models.CASCADE)
    Date = models.DateField()
    Category = models.CharField(max_length=50)
    PatientType = models.CharField(max_length=50)
    Amount = models.IntegerField()

class DoctorTable(models.Model):
 DoctorId = models.AtuoField(primary_key = True) 
DoctorName = models.CharField(max_length = 50)
 Department = models.CharField(max_length = 100)

1.在这里,我创建了实验室模型和带有医生表的外键。我想使用医生表在下拉列表中呈现数据。

【问题讨论】:

  • 不太清楚要做什么。我的猜测是您正在寻找像 django-select2 这样的包。
  • 感谢@WillemVanOnsem 的建议我已经尝试过了,但它对我不起作用。实际上,我正在寻找可以将医生 ID 保存在实验室表中的东西,并希望在下拉列表中针对该医生 ID 显示医生名称,并在编辑/更新记录的情况下相同。
  • 您已经将医生 ID 存储在 Labtable 中,这就是 ForeignKey 正在做的事情。
  • 是的,但现在的问题是我在下拉列表中获取数据作为对象,而我只需要医生姓名
  • 你能分享DoctorTable的模型吗?

标签: python django sqlite


【解决方案1】:

您可以通过为该模型实现__str__ 方法来指定如何显示DoctorTable 模型对象,因此:

class DoctorTable(models.Model):
    DoctorId = models.AutoField(primary_key=True)
    DoctorName = models.CharField(max_length=50)
    Department = models.CharField(max_length=100)

    def __str__(self):
        return self.DoctorName

注意:通常Django模型中的字段名是用snake_case写的,而不是PascalCase,所以应该是:@ 987654324@ 而不是 DoctorName。


注意:模型通常没有Table 后缀。模型不是表,它作为表存储在关系数据库中,但即便如此,它也有额外的逻辑,如验证器、管理器等。

【讨论】:

  • 谢谢,我试试这个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-12
  • 1970-01-01
  • 2018-10-19
  • 1970-01-01
  • 1970-01-01
  • 2017-05-12
  • 1970-01-01
相关资源
最近更新 更多