Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 访问通过django中的manytomanyfield创建的表数据_Python_Django_Django Models_Django Templates_Django Views - Fatal编程技术网

Python 访问通过django中的manytomanyfield创建的表数据

Python 访问通过django中的manytomanyfield创建的表数据,python,django,django-models,django-templates,django-views,Python,Django,Django Models,Django Templates,Django Views,我有一个模型文件,其中一个用户可以拥有任意数量的农场,管理员可以创建一个费用并将其放在一个或多个农场上。问题是我想访问通过费用模型中的ManyToManyField创建的表。我只想选择与单个用户相关的ManyToManyField行 假设管理员创建了一个id为“3383”的费用,并从MultiSelectWidget中选择了五个农场。在这五个农场中,用户名“Mike”有两个农场。ManyToManyField表将在其表中为创建5行,包括用户“Mike”的2行农场。我想访问这两排,但无法访问这两排

我有一个模型文件,其中一个用户可以拥有任意数量的农场,管理员可以创建一个费用并将其放在一个或多个农场上。问题是我想访问通过费用模型中的ManyToManyField创建的表。我只想选择与单个用户相关的ManyToManyField行

假设管理员创建了一个id为“3383”的费用,并从MultiSelectWidget中选择了五个农场。在这五个农场中,用户名“Mike”有两个农场。ManyToManyField表将在其表中为创建5行,包括用户“Mike”的2行农场。我想访问这两排,但无法访问这两排

注意:我只带了用户id用于查找

型号.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)
请帮忙

谢谢


查看模型字段文档以了解多对多。您可以通过在您的费用模型M2M声明中添加相关的费用,将“费用设置”的属性名称更改为其他(“费用”)。

考虑到费用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)
mikes_farm_list = FarmOwner.Objects.filter(owner="Mike").values_list('farms', flat=True)
Charges.Objects.filter(chargeId=3383, farms__in=mikes_farm_list)