Django tastpie,我如何 add/save-to 两个模型只创建一次 post 调用
Django tastpie, how do i add/save-to two models with just once create post call
我正在尝试使用 tastypie 从 django 后端向 android 应用程序提供 restful api。
我的示例数据库模型是:
class Device(models.Model):
userprofile = models.ForeignKey(UserProfile, null=True)
device_id = models.CharField(max_length=512)
os = models.CharField(max_length=128, null=True)
manufacturer = models.CharField(max_length=128, null=True)
registered_on = models.DateTimeField(default=datetime.now)
class Meta:
ordering = ['registered_on']
verbose_name_plural = 'Devices'
def __unicode__(self):
return self.device_id
class DeviceSession(models.Model):
device = models.ForeignKey(Device)
device_token = models.CharField(max_length=512, blank=True)
new_token = models.CharField(max_length=512, null=True)
is_valid = models.BooleanField(default=True)
issued_date = models.DateTimeField(default=datetime.now)
expiry_date = models.DateTimeField(null=True)
我的 resources.py 文件是:
class DeviceResource(ModelResource):
class Meta:
queryset = Device.objects.all()
authorization = Authorization()
allowed_method = ['get','post']
现在,当我收到对设备的创建请求时,我该怎么做才能在两个模型中创建条目 url 即 http://localhost:9999/api/v1/device/。
我是 django 的新手,所以会要求人们以较低的复杂性来回答。
Tastypie提供了一个可以使用的函数obj_create,您可以在创建Device对象模型时使用该函数为DeviceSession模型创建入口
例如:
def obj_create(self, bundle, **kwargs):
bundle = super(DeviceResource, self).obj_create(bundle, **kwargs)
new_object = DeviceSession()
new_object.device = bundle.obj
new_object.device_token = 'what ever or data coming from post?'
new_object.save()
return bundle
该函数在创建Device对象时创建DeviceSession对象bundle.obj是Device的创建对象
我正在尝试使用 tastypie 从 django 后端向 android 应用程序提供 restful api。
我的示例数据库模型是:
class Device(models.Model):
userprofile = models.ForeignKey(UserProfile, null=True)
device_id = models.CharField(max_length=512)
os = models.CharField(max_length=128, null=True)
manufacturer = models.CharField(max_length=128, null=True)
registered_on = models.DateTimeField(default=datetime.now)
class Meta:
ordering = ['registered_on']
verbose_name_plural = 'Devices'
def __unicode__(self):
return self.device_id
class DeviceSession(models.Model):
device = models.ForeignKey(Device)
device_token = models.CharField(max_length=512, blank=True)
new_token = models.CharField(max_length=512, null=True)
is_valid = models.BooleanField(default=True)
issued_date = models.DateTimeField(default=datetime.now)
expiry_date = models.DateTimeField(null=True)
我的 resources.py 文件是:
class DeviceResource(ModelResource):
class Meta:
queryset = Device.objects.all()
authorization = Authorization()
allowed_method = ['get','post']
现在,当我收到对设备的创建请求时,我该怎么做才能在两个模型中创建条目 url 即 http://localhost:9999/api/v1/device/。
我是 django 的新手,所以会要求人们以较低的复杂性来回答。
Tastypie提供了一个可以使用的函数obj_create,您可以在创建Device对象模型时使用该函数为DeviceSession模型创建入口
例如:
def obj_create(self, bundle, **kwargs):
bundle = super(DeviceResource, self).obj_create(bundle, **kwargs)
new_object = DeviceSession()
new_object.device = bundle.obj
new_object.device_token = 'what ever or data coming from post?'
new_object.save()
return bundle
该函数在创建Device对象时创建DeviceSession对象bundle.obj是Device的创建对象