类型为 'ManyRelatedManager' 的 Django TypeError 对象没有 len()



我正在尝试自定义组合对象的创建方法。字段tag_id应限制为2个tag实例。我试过类似的东西

if len(combination.tag_id) == 2:

并且我正在获取类型为"ManyRelatedManager"的错误对象没有len((

有没有其他方法可以将此字段的最大长度设置为2?

型号.py

class Combination(models.Model):
user = models.ForeignKey(CustomUser, on_delete=models.SET_NULL, null=True)
gameround = models.ForeignKey(Gameround, on_delete=models.CASCADE, null=True)
resource = models.ForeignKey(Resource, on_delete=models.CASCADE, null=True)
tag_id = models.ManyToManyField(Tag, null=True)
created = models.DateTimeField(editable=False)
score = models.PositiveIntegerField(default=0)
objects = models.Manager()
def __str__(self):
return str(self.tag_id) or ''

序列化程序.py

def create(self, validated_data):
user = None
request = self.context.get("request")
if request and hasattr(request, "user"):
user = request.user
score = 0
resource_id = validated_data.get("resource")
combination = Combination(
user=user,
gameround=validated_data.get("gameround"),
resource=validated_data.get("resource"),
created=datetime.now(),
score=score
)
combination.save()
tag_data = validated_data.pop('tag_id', None)
for tag_item in tag_data:
tag = Tag.objects.get_or_create(**tag_item)[0]
combination.tag_id.add(tag)
# if len(combination.tag_id) == 2:
return combination

通过添加解决

if combination.tag_id.count() == 2:
return combination

相关内容

最新更新