首页 > 解决方案 > 如何在另一个表的特定属性上设置 ForeignKey?

问题描述

这是我的头等舱 Klant,意思是客户。它有一个 id、一个客户名称和来自客户的用户,这是一个 ManyToManyField,指的是 django 给我的 User-table 中的用户。

class Klant(models.Model):
    id = models.AutoField(primary_key=True)
    klant_naam = models.CharField(max_length=100, default='-')
    klant_gebruiker = models.ManyToManyField(User)

    def __str__(self):
        return str(self.id) + " - " + self.klant_naam

这是 Actie 类(动作或用户确定的动作),它有一个 id、一个动作名称、一个动作发布日期、一个结束日期(截止日期)、一个引用 Klant 和 actie_gebruiker 的客户 ID我想从 Klant 表中引用 klant_gebruiker。

class Actie(models.Model):
    id = models.AutoField(primary_key=True)
    actie_naam = models.CharField(max_length=150, default='-')
    actie_aanmaakdatum = models.DateTimeField(default=datetime.now())
    actie_einddatum = models.DateTimeField(default=datetime.now() + timedelta(days=1))
    actie_klant = models.ForeignKey(Klant, default=1)
    actie_gebruiker = models.ForeignKey(Klant.klant_gebruiker, default=1)

    def __str__(self):
        return str(self.id) + " - " + self.actie_naam

所以我现在的问题是我必须做什么才能将 actie_gebruiker 的值设置为 Klant 表中的属性 klant_gebruiker?

标签: pythondjangoshelldjango-modelsrevitpythonshell

解决方案


我相信您需要使用throughManyToManyField 定义的参数。

class Klant(models.Model):
    id = models.AutoField(primary_key=True)
    klant_naam = models.CharField(max_length=100, default='-')
    klant_gebruiker = models.ManyToManyField(User, through='Actie')

    def __str__(self):
        return str(self.id) + " - " + self.klant_naam


class Actie(models.Model):
    id = models.AutoField(primary_key=True)
    actie_naam = models.CharField(max_length=150, default='-')
    actie_aanmaakdatum = models.DateTimeField(default=datetime.now())
    actie_einddatum = models.DateTimeField(default=datetime.now() + timedelta(days=1))
    actie_klant = models.ForeignKey(Klant)
    actie_gebruiker = models.ForeignKey(User)

    def __str__(self):
        return str(self.id) + " - " + self.actie_naam

推荐阅读