Django 多对多 return 相关对象列表

Django many-to-many return list of releated objects

我在模型 Stuff 和模型 Thing 之间建立了多对多关系。当 Stuff 转换为字符串时,我想 return 组成它的列表。

class Thing(models.Model):
    name = models.CharField(max_length=50)

class Stuff(models.Model):
    things = models.ManyToManyField(Thing)

    def __str__(self):
        # Return comma delimited list of things that are related to self

我见过很多使用 stuff.thing.all() 解决的问题。如果我在事物上使用 .get(),我该如何过滤 Stuff 的 ID?

class Stuff(models.Model):
    ...

    def __str__(self):
        return '-'.join([str(thing) for thing in self.things.all()])

这将在打印 Stuff 对象时打印 thing1-thing2-thing3(您还应该在 Thing 模型中定义一个 __str__ 方法,否则它将打印 Thing object-Thing object-Thing object).

如果你想通过Stuff ID过滤Thing个对象,你可以这样做:

Thing.objects.filter(stuff__id=yourIDHere)

看看Django docs on lookups