Django 当模型对同一模型有2个外键时,管理内联?

Django 当模型对同一模型有2个外键时,管理内联?,django,django-admin,foreign-keys,Django,Django Admin,Foreign Keys,我已经在我的网站上创建了一个推荐系统。诚然,时间已经晚了,这可能不是一种正确的关系 class Referral(models.Model): referred=models.ForeignKey(User, related_name="referred") referrer=models.ForeignKey(User,related_name="referrer") def __unicode__(self): return self.user.fi

我已经在我的网站上创建了一个推荐系统。诚然,时间已经晚了,这可能不是一种正确的关系

class Referral(models.Model):
    referred=models.ForeignKey(User, related_name="referred")
    referrer=models.ForeignKey(User,related_name="referrer")

    def __unicode__(self):
        return self.user.first_name
其他人会推荐什么来代表这种关系?如果这是正确的,我有没有办法把它变成一个伪内联的用户管理员?由于同一个表有两个外键,因此不允许按当前构造的方式使用它


谢谢

事实上,用户与自身之间存在着多种关系-引用类本身不会向这种关系添加任何内容

class Referral(models.Model):
    referred=models.ForeignKey(User, related_name="referred")
    referrer=models.ForeignKey(User,related_name="referrer")

    def __unicode__(self):
        return self.user.first_name
通常,您只需将ManyToManyField添加到模型中,它就会显示在admin中,但我猜您引用的用户类是内置的django.contrib.auth用户,您不能直接修改它。因此,一种方法是定义一个UserProfile类,该类对用户具有ForeignKey,并在其中添加ManyToMany关系


编辑回复评论不,我不是这个意思。我是说你应该完全放弃推荐课程。一个只有两个FK而没有其他东西的模型——不管它们是否都属于同一个模型——是M2M关系的直通表。在您的例子中,这种关系是在用户和自身之间的-但正如我所说的,因为您不想更改用户,所以它是在新的UserProfile模型和自身之间的。

实际上,这是用户和自身之间的一种多个关系-引用类本身不会向这种关系添加任何内容

class Referral(models.Model):
    referred=models.ForeignKey(User, related_name="referred")
    referrer=models.ForeignKey(User,related_name="referrer")

    def __unicode__(self):
        return self.user.first_name
通常,您只需将ManyToManyField添加到模型中,它就会显示在admin中,但我猜您引用的用户类是内置的django.contrib.auth用户,您不能直接修改它。因此,一种方法是定义一个UserProfile类,该类对用户具有ForeignKey,并在其中添加ManyToMany关系


编辑回复评论不,我不是这个意思。我是说你应该完全放弃推荐课程。一个只有两个FK而没有其他东西的模型——不管它们是否都属于同一个模型——是M2M关系的直通表。在您的例子中,这种关系是在用户和自身之间的——但正如我所说的,因为您不想更改用户,所以它是在新的UserProfile模型和自身之间的。

关于使用内置用户模型,我不想更改它。这里的引用类本质上是一个UserProfile类,对吧……除了它没有从命名它为UserProfile派生的额外queryset功能(我可能应该进行更改)之外,我对您将其描述为M2M字段感到有点困惑。被推荐用户只能有一个推荐人。我认为这是一个多对一的关系,因此外键。我遗漏了什么?关于定义额外字段的对称多个字段的中间模型呢?关于使用内置用户模型,我不想更改。这里的引用类本质上是一个UserProfile类,对吧……除了它没有从命名它为UserProfile派生的额外queryset功能(我可能应该进行更改)之外,我对您将其描述为M2M字段感到有点困惑。被推荐用户只能有一个推荐人。我认为这是一个多对一的关系,因此外键。我遗漏了什么?定义额外字段的对称多个字段的中间模型呢?