如何解决如何在 Django 模型中创建多个 ContentType 字段?
我的 Django 模型使用函数模型,即公司中的通用函数(例如:CFO)。
在此模型中,我希望有一个字段指向拥有该功能的默认人员 + 另一个字段,以便在出现问题时指向备用人员。每个字段都应该能够指向各种模型(用户模型 + 尚未登录网站的人的模型)
只要我只指出一个模型,这很容易:
class Function(models.Model):
function_name = models.CharField(max_length=255,blank=True) # e.g. CFO
main_user = models.ForeignKey('auth.User',on_delete=models.SET_NULL,null=True,blank=True)
backup_user = models.ForeignKey('auth.User',blank=True)
但是如果我想让这两个字段中的每一个都指向不同的模型,我需要使用 ContentType,例如:
class Function(models.Model):
functionname = models.CharField(max_length=255,blank=True) # e.g. CFO
#GenericForeignKey:
content_type = models.ForeignKey(ContentType,on_delete=models.SET_NULL)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey()
如何在一个模型中拥有两个 GenericForeignKey? (对于main_user 和backup_user)?
非常感谢您的帮助,我不知道如何继续
解决方法
GenericForeginKey
可以带 2 个位置参数,第一个是 ForeignKey
到 ContentType
的字段名称,第二个是泛型关系的对象 ID 的字段名称.根据这些信息,您可以构建您的通用关系,例如:
class Function(models.Model):
functionname = models.CharField(max_length=255,blank=True) # e.g. CFO
main_user_content_type = models.ForeignKey(ContentType,on_delete=models.SET_NULL)
main_user_object_id = models.PositiveIntegerField()
main_user = GenericForeignKey('main_user_content_type','main_user_object_id')
backup_user_content_type = models.ForeignKey(ContentType,on_delete=models.SET_NULL)
backup_user_object_id = models.PositiveIntegerField()
backup_user = GenericForeignKey('backup_user_content_type','backup_user_object_id')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。