2011-08-26 22 views
0

我有这个模型文件,其中用户可以拥有任意数量的农场和管理员可以创建一个费用,并把它放在一个或多个农场。问题是,我想访问通过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) 

请帮

感谢

回答

1

考虑到充电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个相关行
0
mike = Farm.objects.get(farmNo="Mike") 
for charge in mike.charge_set.all(): 
    print charge.chargeId 

查看模型字段文档中的多对多。您可以在Charge模型M2M声明中加入related_name =“charges”,将“charge_set”的属性名称更改为其他内容(“收费”)。

相关问题