【问题标题】:Is there a way to make foreign key from an attribute to another from other class in django?有没有办法在 django 中从一个属性到另一个类的外键?
【发布时间】:2020-03-30 10:45:14
【问题描述】:
class Assignatura(models.Model):

    """docstring for Assignatura"""

    nom = models.CharField(max_length = 40)

    codi = models.IntegerField()

    any_academic = models.CharField(max_length = 7)



class Matricula(models.Model):

    """docstring for Matricula"""

    nia_alumne = models.ForeignKey(Alumne, null = False,  on_delete=models.CASCADE, verbose_name = 'Nom alumfne')

    codi_assignatura = models.ForeignKey(Assignatura, null = False, on_delete=models.CASCADE)

    any_academic = models.CharField(max_length = 7)

    image = models.ImageField(upload_to="matriculas", null=True)

我希望 codi_assignatura 仅从 Assignatura 获取 codi

【问题讨论】:

  • codiAssignatura 中是唯一的吗?
  • 是的,每个 Assignatura 只有一个 codi
  • 你是什么意思“只从 Assignatura 获取 codi”?

标签: python html django


【解决方案1】:

您可以使Assignaturacode 字段唯一:

class Assignatura(models.Model):
    """docstring for Assignatura"""
    nom = models.CharField(max_length=40)
    codi = models.IntegerField(unique=True)
    any_academic = models.CharField(max_length=7)

如果目标字段是唯一的,那么可以在ForeignKey中指定一个to_field=… parameter [Django-doc]

class Matricula(models.Model):
    """docstring for Matricula"""
    nia_alumne = models.ForeignKey(Alumne, null=False, on_delete=models.CASCADE, verbose_name='Nom alumfne')
    codi_assignatura = models.ForeignKey(Assignatura, to_field='codi', null=False, on_delete=models.CASCADE)
    any_academic = models.CharField(max_length=7)
    image = models.ImageField(upload_to="matriculas", null=True)

现在codi_assignatura<b>_id</b> 字段将存储它所引用的Assignaturacode

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    相关资源
    最近更新 更多