在Django访问通过manytomanyfield创建的表数据
问题描述:
我有这个模型文件,其中用户可以拥有任意数量的农场和管理员可以创建一个费用,并把它放在一个或多个农场。问题是,我想访问通过ManyToManyField创建的表在费用 model.I只想选择那些与单个用户相关的manytomanyfield行。在Django访问通过manytomanyfield创建的表数据
想,如果管理员创建了ID收费“3383”和选择5个养殖场从MultiSelectWidget.In这五个农场用户名“迈克”有两个farms.ManyToManyField表将在其表中创建5行包括2行用户“麦克”农场。我想访问这两行,但无法设法去这两行。
注:我只是用我的用户ID查找
Models.py
class Farm(models.Model):
farmNo = models.CharField(max_length=100)
class FarmOwner(models.Model):
owner = models.ForeignKey(User)
farm = models.ManyToManyField(Farm)
class Charges(models.Model):
chargeId = models.CharField(max_length=100)
farms = models.ManyToManyField(Farm)
请帮
感谢
答
考虑到充电Id为3383
和用户是mike
您可以使用此
mikes_farm_list = FarmOwner.Objects.filter(owner="Mike").values_list('farms', flat=True)
Charges.Objects.filter(chargeId=3383, farms__in=mikes_farm_list)
让那些2个相关行
答
mike = Farm.objects.get(farmNo="Mike")
for charge in mike.charge_set.all():
print charge.chargeId
查看模型字段文档中的多对多。您可以在Charge模型M2M声明中加入related_name =“charges”,将“charge_set”的属性名称更改为其他内容(“收费”)。