Django 如何从多对多模型生成列表?
我有以下型号:Django 如何从多对多模型生成列表?,django,django-models,django-templates,django-views,Django,Django Models,Django Templates,Django Views,我有以下型号: class Cast(models.Model): name = models.CharField(max_length=100, null=True, blank=True) def __str__(self): return self.name class WorkCast(models.Model): work = models.ForeignKey(Work_Music, verbose_name=_('work'), rel
class Cast(models.Model):
name = models.CharField(max_length=100, null=True, blank=True)
def __str__(self):
return self.name
class WorkCast(models.Model):
work = models.ForeignKey(Work_Music, verbose_name=_('work'), related_name='workcast', null=True, blank=True, on_delete=models.PROTECT)
cast = models.ManyToManyField(Cast, verbose_name=_('cast'), related_name='workcast', blank=True)
我正在尝试生成一个列表:
Cast member #1, cast member #2, cast member #3 from the WorkCast model:
我尝试将其添加到模型中,但没有生成任何内容。怎么了
def __str__(self):
return "%s" % (
self.cast,
", ".join(cast.name for self.cast in self.cast.set()),
)
首先,您需要一个包含所有您想要的强制转换实例的查询集
cast_qs = WorkCast.objects.get(id=<id>).cast.all()
如果您只需要列表中的一些值,可以在queryset上调用values_list
names = cast_qs.values_list('names', flat=True)
我不认为你能在一个模型中做到这一点。@HC我想我不理解你的问题。您是说希望WorkCast String方法返回并显示所有强制转换模型的名称吗?这是可能的,但不可取。当你有100多个名字时会发生什么?
names = cast_qs.values_list('names', flat=True)