ara*_*gon 8 django foreign-keys
在我的model.py中
class Layer(models.Model):
user = models.IntegerField()
name = models
...
class Point(models.Model):
layers = models.ForeignKey(Layer)
meta = models.TextField()
...
Run Code Online (Sandbox Code Playgroud)
在我的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()
Run Code Online (Sandbox Code Playgroud)
但它在我的django调试中出错.在我的项目中我使用geodjango,openlayers和extjs ...我没有找到任何有关保存我的帖子的解决方案
我与我的外键没有任何关系..基本上我想制作一个图层,而不是我想在我的图层中添加一个点,我想用图层ID保存我的观点....
hen*_*ski 13
更有效的方法是通过在末尾添加"_id"来指定外键,如下所示:
cs = Point(layers_id = mid, meta = metas)
cs.save()
Run Code Online (Sandbox Code Playgroud)
不要执行layers = XXX.objects.get(id = ###),因为这会使数据库查询的数量翻倍.
另外......你不是在这里清理你的POST数据,这非常危险.得到这样的:
from django import forms
id_field = forms.IntegerField()
layer_id = id_field.clean(request.POST.get("layerId", "")
Run Code Online (Sandbox Code Playgroud)
发布回溯以帮助理解您的问题(对于将来的问题)是有帮助的.
在我看来,你正在将一个数字传递给你的Point实例的layers属性,这将导致一个ValueError.您可以将数字传递给外键字段的唯一位置是django形式,它会为您执行查找.
您需要分配一个实际的Layer实例.
cs = Point()
cs.layers = Layer.objects.get(id=mid)
cs.meta = metas
cs.save()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14760 次 |
| 最近记录: |