Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.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查询可以从shell工作,但不能从dev服务器工作?在dev服务器中引发FieldError_Python_Django_Django Models - Fatal编程技术网

Python Django查询可以从shell工作,但不能从dev服务器工作?在dev服务器中引发FieldError

Python Django查询可以从shell工作,但不能从dev服务器工作?在dev服务器中引发FieldError,python,django,django-models,Python,Django,Django Models,我一直在用Django的ORM(Django 1.3)玩wtf。在开发服务器中: # in x.modules.training.models class Training(x.models.Base): trainers = models.ManyToManyField(staff_models.Staff, related_name='trainings_taught') people = models.ManyToManyField(x.models.Person, rel

我一直在用Django的ORM(Django 1.3)玩wtf。在开发服务器中:

# in x.modules.training.models
class Training(x.models.Base):
    trainers = models.ManyToManyField(staff_models.Staff, related_name='trainings_taught')
    people = models.ManyToManyField(x.models.Person, related_name='trainings_attended')

# in any view
from x.modules.staff.models import Staff
from x.models import Person

Staff.objects.filter(trainings_taught=12)
# [<Staff: Staff object>]

Person.objects.filter(trainings_attended=12)
# FieldError: Cannot resolve keyword 'trainings_attended' into field. Choices are: address, comment, contact_for_farmers, email, farmer, first_name, id, last_name, mobile_number, modified_by, modified_timestamp, national_id, passport_number, region, version

# Why would it work for one ManyToMany and not the other?

这是怎么回事?

如果有任何类继承自Training类,则必须确保所有相关的名称都不同。因此,您应将其声明为:

people = models.ManyToManyField(x.models.Person, related_name='%(app_label)s_%(class)s_trainings_attended')

如果有任何类继承自培训类,则必须保证所有相关的_名称都不同。因此,您应将其声明为:

people = models.ManyToManyField(x.models.Person, related_name='%(app_label)s_%(class)s_trainings_attended')

您是否有从培训继承的类?Staff确实从Person继承(OneToOne继承),但它从shell工作的事实似乎排除了模型验证问题(并且模型确实通过了验证)。您是否有从培训继承的类?Staff确实从Person继承(OneToOne继承)但是,它在shell中工作的事实似乎排除了模型验证问题(并且模型确实通过了验证)。我有从Person继承的类,但不是从Training继承的类。问题是Staff类包含相关的名称“trainings”,而Training也包含该名称。Django不允许通过模型类复制相关的_名称。首先试试我的解决方案。员工确实包含你教过的培训,这很有效,但培训不起作用,培训是定义许多领域的地方。我尝试了你的解决方案,我仍然在Person上得到FieldError,它无法将参加的x_training_training_纳入一个字段。我有从Person继承的类,但不是从training继承的类。问题是Staff类包含相关的名称“trainings_Teached”,而training也包含该名称。Django不允许通过模型类复制相关的_名称。首先试试我的解决方案。员工确实包含你教过的培训,这很有效,但培训不起作用,培训是定义许多领域的地方。我尝试了你的解决方案,但我仍然在无法解决x_training_training_参加的某个领域的人员身上发现FieldError。