在我的model.py
中class Layer(models.Model):
user = models.IntegerField()
name = models
...
class Point(models.Model):
layers = models.ForeignKey(Layer)
meta = models.TextField()
...
在我的view.py
中def datasave(request, id):
mid = request.POST.get("layerid",default = "")
metas = request.POST.get("meta",default = "")
cs = Point()
cs.layers = mid
cs.meta = metas
cs.save()
但它在我的django调试中出错。在我的项目中我使用geodjango,openlayers和extjs ...我没有找到关于保存帖子的任何解决方案
我与我的外键没有任何关系..基本上我想制作一个图层,而不是当我想在我的图层中添加一个点时,我想用图层ID保存我的观点....
答案 0 :(得分:12)
更有效的方法是通过在末尾添加“_id”来指定外键,如下所示:
cs = Point(layers_id = mid, meta = metas)
cs.save()
不要执行layers = XXX.objects.get(id = ###),因为这会使数据库查询的数量增加一倍。
另外......你不是在这里清理你的POST数据,这非常危险。得到它:
from django import forms
id_field = forms.IntegerField()
layer_id = id_field.clean(request.POST.get("layerId", "")
答案 1 :(得分:9)
发布追溯有助于了解您的问题(以后的问题)。
我认为您向Point
实例的layers
属性传递了一个数字,这会导致ValueError
。您可以将数字传递给外键字段的唯一位置是django形式,它会为您执行查找。
您需要分配一个实际的Layer
实例。
cs = Point()
cs.layers = Layer.objects.get(id=mid)
cs.meta = metas
cs.save()