首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Django应用程序中实现用户匹配算法

如何在Django应用程序中实现用户匹配算法
EN

Stack Overflow用户
提问于 2019-11-12 06:32:49
回答 1查看 532关注 0票数 1

我正在创建一个Django应用程序,允许users to register作为"mentor“或"mentee”。每个用户都有一些存储在MentorProfile/MenteeProfile用户中的信息,这些信息在所有帐户中都是通用的,而导师/被辅导者有第二个表(一对一)的,它具有专门知识/兴趣领域。

目标是创建一种机制,在运行匹配算法(例如稳定关系)之后,通过该机制将导师分配给被辅导者。我有工作的注册/编辑功能,但是我被困在如何开始实现匹配。

是否有一种方法将按钮引入Django管理面板,当单击该按钮时:

  • 从Django应用程序中提取必要的信息
  • 使导师/学员匹配并分配任务。
  • 使用以下匹配更新MentorProfile和MenteeProfile表

值得注意的是,我们有一个可以工作的python脚本,它可以从csv中提取必要的信息,从而完成导师/指导者关系的分配。我们只是不确定如何在我们的应用程序中实现这个逻辑。

编辑:只是对我的模型的一般看法。此外,用户类具有默认的用户属性(用户名、名、姓氏、电子邮件等)。

这是我的blog/models.py

代码语言:javascript
运行
复制
class User(AbstractUser):
  is_mentor = models.BooleanField('Mentor', default=False)
  is_mentee = models.BooleanField('Mentee', default=False)


class MenteeProfile(models.Model):
CAREER_CHOICES = [
    ('Doctor', 'Doctor'),
    ('Teacher', 'Teacher'),
    ('Engineer', 'Engineer'),
    ('Scientist', 'Scientist'),
    ('Biologist', 'Biologist'),
    ('Business', 'Business')
]
user=models.OneToOneField(User, on_delete=models.CASCADE)
career_interest1 = models.CharField(max_length=30, default='Doctor', choices=CAREER_CHOICES)
career_interest2 = models.CharField(max_length=30, default='Doctor', choices=CAREER_CHOICES)
career_interest3 = models.CharField(max_length=30, default='Doctor', choices=CAREER_CHOICES)

class MentorProfile(models.Model):
user=models.OneToOneField(User, on_delete=models.CASCADE)
AREA_OF_EXPERTISE = [
    ('Doctor', 'Doctor'),
    ('Teacher', 'Teacher'),
    ('Engineer', 'Engineer'),
    ('Scientist', 'Scientist'),
    ('Biologist', 'Biologist'),
    ('Business', 'Business')
    ('--', '--')    ]
career_expertise1 = models.CharField(max_length=30, default='--', choices=AREA_OF_EXPERTISE)
career_expertise2 = models.CharField(max_length=30, default='--', choices=AREA_OF_EXPERTISE)
career_expertise3 = models.CharField(max_length=30, default='--', choices=AREA_OF_EXPERTISE)
career_expertise4 = models.CharField(max_length=30, default='--', choices=AREA_OF_EXPERTISE)
career_expertise5 = models.CharField(max_length=30, default='--', choices=AREA_OF_EXPERTISE)
career_expertise6 = models.CharField(max_length=30, default='--', choices=AREA_OF_EXPERTISE)
def __str__(self):
    return self.user.username

谢谢!

所有的帮助都将受到感谢!

EN

回答 1

Stack Overflow用户

发布于 2019-11-12 07:50:35

来自姜戈博士

在admin.py文件中:

代码语言:javascript
运行
复制
class MentorProfileAdmin(admin.ModelAdmin):
    #define your list display or fieldsets
     ....
     ....

     #now need to define urls for custom button in admin template file
     def get_urls(self):
        """
        generate urls for methods. and attach with admin url
        :param self:
        """
        urls = super().get_urls()
        my_urls = [
            url(r'^match-mentee/$', self.match_mentee),
        ]
        return my_urls + urls

        def match_mentee(self, request):
        """
        here you put the matching logic
        """
        ....
        ....
        self.message_user(request, "mentor has been assigned to mentee")
        return HttpResponseRedirect("../")

对于在管理模板中添加自定义按钮,据我所知,在django 1.8中需要自定义它是有限制的。因此,只有有限的一部分管理模板可以定制。我想请您参考官方文件来探索定制。

另外,将url放在按钮的href中,以使按钮在模板中工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58813212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档