现在,我遇到了M2O关系的问题:(
Model.py
class StorageDoc(models.Model): # tabela dokumentująca ruch na magazynie
typeList = (
(' ', " "),
('WZ', "WZ"),
('PZ', "PZ"),
('PM', "PM")
)
docType = models.CharField(max_length=10, choices=typeList, default=' ')
storageName = models.ForeignKey(DictStorage, on_delete=models.DO_NOTHING)
createTime = models.DateTimeField(auto_now=True)
orderNumber = models.CharField(max_length=64, blank=True)
class StorageDocPosition(models.Model):
storageDoc = models.ForeignKey(StorageDoc, on_delete=models.DO_NOTHING, related_name="sds")
item = models.ForeignKey(Part, on_delete=models.DO_NOTHING)
volumeUsed = models.IntegerField()
volumeBefore = models.IntegerField()
volumeAfter = models.IntegerField()views.py
def StorageDocList (request):
s_documents = StorageDocPosition.objects.all().prefetch_related("storageDoc")
for s_document in s_documents:
s_documentP = StorageDocPosition.storageDoc.all()
return render(request, 'StorageDocList.html', {'storageDocAll': s_documents})
my error is:
'ForwardManyToOneDescriptor' object has no attribute 'all'为什么在这种情况下我不能使用"all“?
如何修复它?
感谢您的帮助:
发布于 2020-05-05 22:24:56
首先,我不太理解你想要用这个for循环做什么:
for s_document in s_documents:
s_documentP = StorageDocPosition.storageDoc.all()除了s_document中的拼写错误之外,您不需要更改变量,只需修改一个临时迭代器,原始的s_document仍然是相同的,并且您需要传入与SotrageDocList函数中第一行相同的上下文。
如果您要实现的目标是获取所有与预取相关的文档,那么只需消除for循环并将查询集传递到上下文中即可。
希望这能有所帮助!
https://stackoverflow.com/questions/61614928
复制相似问题