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)
我在模型 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)