2016-02-23 3 views
2

У меня есть две моделиTastypie апи для нескольких моделей

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

Ty для ответа. Можете ли вы объяснить, что делает тастипия, чтобы справиться с этим? И если я могу получить все поля в таблице, используя 'fields.ToManyField()' –

+0

Я бы рекомендовал вам прочитать документы: http://django-tastypie.readthedocs.org/en/latest/ –

+0

'fields.ToManyField () 'для представления отношений m2m. –