我正在构建一个提交一些数据的ajax页面。单击提交按钮时,我希望通过request.GET获取数据。但我对数据的处理是基于行动,即“提交”,“更改”,“删除”,这也是从请求获得的.GET。
我正在尝试找出在我的数据库中添加/修改/删除的最佳方法,因为我的模型包含其他模型的外键。
我应该这样做:
# Model4
class Model4(models.Model):
.... data ...
# Model3
class Model3(models.Model):
.... data ....
# Model2
class Model2(models.Model):
... data ...
foreign key to Model3 & Model4
# Model1
class DataModel(models.Model):
# ----- Model data -----
name = models.CharField(max_length=30)
data = models.ForeignKey(Model2, blank=True, null=True, on_delete=models.SET_NULL)
@classmethod
def submit():
pass
@classmethod
def change():
pass
@classmethod
def delete():
pass
这个模型链接到Model2,它有两个外键到另外两个模型,Model3& Model4
或者我应该做这样的事情
# methods within the views.py
def submit( DataModel Object, ... data ... ):
# create new data objects and associate with DataModel
pass
def change( DataModel Object, ... data ... ):
# change data object associated with DataModel
pass
def delete( DataModel Object, ... data ... ):
# delete data object associated with DataModel
pass
或者我应该做一些完全不同的事情? 以下是提交的内容:
def submitdata(request):
if not request.user.is_authenticated():
return HttpResponseRedirect(reverse('loginregistration.views.login'))
results = {'success':False, 'message':"invalid request"}
if request.method == u'GET':
GET = request.GET
if GET.has_key(u'datamodel_id') and GET.has_key(u'action') and GET.has_key(u'data'):
datamodel_id = GET[u'datamodel_id']
action = GET[u'action']
data_model = DataModel.objects.get(datamodel_id=datamodel_id)
if action == u"submit":
results = data_model.submit() # or submit(datamodel_id, data)
elif action == u"change":
results = data_model.change() # or change(datamodel_id, data)
elif action == u"delete":
results = data_model.delete() # or delete(datamodel_id, data)
else:
results = False
json = simplejson.dumps(results)
return HttpResponse(json, mimetype='application/json')