Python 通过动态选择django模型列出对象

Python 通过动态选择django模型列出对象,python,django,Python,Django,我想实现一个功能,在这里我需要选择一个django模型(例如从下拉列表中),选择一个后,该模型的所有对象都会显示出来 class Thread(models.Model): sender = models.(???) # This need to be a field that can store a different model on a run time. receiver = models.(???) # same here. 有没有什么方法可以让我先动态地选择模型,然

我想实现一个功能,在这里我需要选择一个django模型(例如从下拉列表中),选择一个后,该模型的所有对象都会显示出来

class Thread(models.Model):
    sender = models.(???) # This need to be a field that can store a different model on a run time.
    receiver = models.(???) # same here.

有没有什么方法可以让我先动态地选择模型,然后从列表中选择一个对象。我在odoo中看到了这个功能。但是Django中有什么吗?

您可以使用多对多字段,从另一个模型中选择多个可用的“学生”和“教师”

    class UserRole(models.Model):
        STUDENT = 'STUDENT'
        TEACHER = 'TEACHER'
    
        ROLE_CHOICES = (
           (STUDENT, 'student'),
           (TEACHER, 'teacher'),
        )
        role_name = models.CharField(max_length=255, choices=ROLE_CHOICES)

        def __str__(self):
            return "{}".format(self.role_name)

    class User(AbstractUser):
        username = models.CharField(max_length=50, unique=True)
        email = models.EmailField(_('email address'))
        role = models.ManyToManyField(UserRole)

    Class Thread(models.Model):
        sender = models.OneToOneField(User, on_delete=models.CASCADE)
        receiver = models.OneToOneField(User, on_delete=models.CASCADE)

这样,您只能在线程的发送方和接收方字段中放置可用角色。

在您的模型中使用继承,将外键映射到用户,然后传递学生对象的教师。

使用ajax也可以解决此问题,但在django中还有另一种方法,我正在搜索

class Test(models.Model):
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type', 'object_id')

有一个好的。

我已经为学生和教师等使用了不同的模型,每个模型都与用户一一连接,因为每个模型中都有额外的字段。您需要一个额外的角色模型来执行此活动。此外,对于所有类型的用户,无论是“学生”还是教师等,您只需要一个用户模型。在角色字段中也使用相同的用户角色模型。就像这个用户模型一样。class User(AbstractUser):username=models.CharField(max_length=50,unique=True)email=models.EmailField(u('email address'))profile=models.OneToOneField(UserProfile,on_delete=models.CASCADE)role=models.ManyToManyField(UserRole)@Nomi请检查编辑后的答案以获得更好的理解。我明白了。实际上,我想找到的是一个解决方案,可以为我提供我想要实现的功能,在问题的最后提到。无论如何,谢谢。我的型号不是这样设计的。我有一个用户模型、一个学生模型和一个教师模型。学生与用户、用户与教师之间存在一对一的关系。