Python 通过动态选择django模型列出对象
我想实现一个功能,在这里我需要选择一个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. 有没有什么方法可以让我先动态地选择模型,然
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请检查编辑后的答案以获得更好的理解。我明白了。实际上,我想找到的是一个解决方案,可以为我提供我想要实现的功能,在问题的最后提到。无论如何,谢谢。我的型号不是这样设计的。我有一个用户模型、一个学生模型和一个教师模型。学生与用户、用户与教师之间存在一对一的关系。