Tastypie api 适用于多个模型
Tastypie api for multiple models
我有两个模型
class LCUser(models.Model):
email = models.CharField(max_length=100,unique=True)
password = models.CharField(max_length=100)
class UserProfile(models.Model):
user = models.OneToOneField(LCUser,primary_key=True)
mobile_phone = models.IntegerField(null=True)
address = models.CharField(max_length=500,null=True)
class UserProfileResource(MultipartResource, ModelResource):
class Meta:
resource_name = 'profile'
queryset = UserProfile.objects.all()
我想设置 /profile/ 端点,以便 CRUD 操作管理所有 5 个字段。
1) 我可以这样做吗?
2)这是一个好习惯吗?
3) 如果不是,我的替代方案是什么?
你可以这样做:
class LCUser(models.Model):
email = models.CharField(max_length=100, unique=True)
password = models.CharField(max_length=100)
class UserProfile(models.Model):
user = models.OneToOneField(LCUser, primary_key=True)
mobile_phone = models.IntegerField(null=True)
address = models.CharField(max_length=500, null=True)
class LCUserResource(MultipartResource, ModelResource):
class Meta:
resource_name = 'lcuser'
queryset = LCUser.objects.all()
excludes = ('password',)
class UserProfileResource(MultipartResource, ModelResource):
user = fields.ToOneField(LCUserResource, 'user')
class Meta:
resource_name = 'profile'
queryset = UserProfile.objects.all()
确保排除密码,您不希望它被读取。
我有两个模型
class LCUser(models.Model):
email = models.CharField(max_length=100,unique=True)
password = models.CharField(max_length=100)
class UserProfile(models.Model):
user = models.OneToOneField(LCUser,primary_key=True)
mobile_phone = models.IntegerField(null=True)
address = models.CharField(max_length=500,null=True)
class UserProfileResource(MultipartResource, ModelResource):
class Meta:
resource_name = 'profile'
queryset = UserProfile.objects.all()
我想设置 /profile/ 端点,以便 CRUD 操作管理所有 5 个字段。
1) 我可以这样做吗? 2)这是一个好习惯吗? 3) 如果不是,我的替代方案是什么?
你可以这样做:
class LCUser(models.Model):
email = models.CharField(max_length=100, unique=True)
password = models.CharField(max_length=100)
class UserProfile(models.Model):
user = models.OneToOneField(LCUser, primary_key=True)
mobile_phone = models.IntegerField(null=True)
address = models.CharField(max_length=500, null=True)
class LCUserResource(MultipartResource, ModelResource):
class Meta:
resource_name = 'lcuser'
queryset = LCUser.objects.all()
excludes = ('password',)
class UserProfileResource(MultipartResource, ModelResource):
user = fields.ToOneField(LCUserResource, 'user')
class Meta:
resource_name = 'profile'
queryset = UserProfile.objects.all()
确保排除密码,您不希望它被读取。