我正在尝试有一个源类,它接受来自djangoèu的项目、概要文件、部门或团队作为autoonetoone字段。基本上,我尝试访问sourceid和源类型(project、profile、department或team),然后发送到另一个类:posts。当我尝试为其他字段添加配置文件为“s”且为空的源时,如下所示:
我收到以下错误消息:
我试过添加一个默认值=,但这是违反直觉的,无论如何都不起作用。这是我的源类:
class Source(models.Model):
profile = AutoOneToOneField('Profile', on_delete=models.CASCADE, null=True, blank=True)
project= models.OneToOneField('Project', on_delete=models.CASCADE, null=True, blank=True)
team = AutoOneToOneField('Team', on_delete=models.CASCADE, null=True, blank=True)
department = AutoOneToOneField('Department', on_delete=models.CASCADE, blank=True, null=True)
def __str__(self):
return self.profile + self.project + self.team + self.department
2条答案
按热度按时间z6psavjg1#
问题是我在def str中使用了超过1个加号,所以要解决这个问题,我所做的只是将其切换到以下位置:
0sgqnhkj2#
问题在于
Source
模型__str__()
方法,其中您尝试将其所有字段添加到一起,但它们不是字符串,并且无法连接。您可以先将每个字段转换为一个字符串,但根据您的模型描述,四个字段中的三个字段None
的。如果要在中选择唯一的非空字段
Source
并返回其字符串表示形式:如果要将相同的选择条件重新用于其他目的,可以首先将其作为自定义特性添加到模型中:
然后可以将唯一的非空字段作为
Source
对象,以获取其id或类型(如您所述)。