2016-02-23 17 views
2

我有兩個型號Tastypie API多個型號

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() 

我想要安裝/型材/端點,使得CRUD操作管理所有5場。

1)我能做到這一點? 2)這是一個很好的做法嗎? 3)如果沒有這將是我的選擇嗎?

回答

1

你可以這樣說:

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() 

確保排除密碼,你不希望得到讀取。

+0

泰答案。你能否解釋一下,如何管理這件事?如果我可以得到使用'fields.ToManyField()表中的所有字段' –

+0

我建議你閱讀文檔:http://django-tastypie.readthedocs.org/en/latest/ –

+0

'fields.ToManyField( )'代表m2m關係。 –