模型.py-
class User(models.Model):
catcher_fname = models.CharField(max_length = 128, blank = True)
catcher_lname = models.CharField(max_length = 128, blank = True)
api_key = models.CharField(max_length = 100, blank = False)
class Address (models.Model):
address = models.CharField(max_length = 150)
city = models.CharField(max_length = 255)
user = models.ForeignKey(User,on_delete=models.CASCADE,related_name='addresses')
注意 - id 字段是自动递增的并且内置在 django 中,您不需要直接指定它。以下演示了如何链接用户 obj 和地址 obj。
>> from .models import User,Address
>> user_obj = User.objects.get(pk=pk)
>> address_obj = Address.objects.get(pk=address_pk)
>> user_obj.address = address_obj
>> user_obj.save()
稍后您可以从用户对象访问该地址,如下所示:
>> from .models import User
>> user_obj = User.objects.get(pk=pk)
>> user_obj.addresses.all() (will give the data)
现在安装 django-rest 框架
views.py -
from rest_framework.generics import RetrieveAPIView
from .serializers import UserDetailSerializer
class UserAPIView(RetrieveAPIView):
serializer_class = UserDetailSerializer
lookup_field = 'id'
queryset = User.objects.all()
序列化器.py -
from .models import User,Address
from rest_framework import serializers
class AddressSerializer(serializers.ModelSerializer):
class Meta:
model = Address
fields = ('id', 'city_id', 'address')
class UserDetailSerializer(serializers.ModelSerializer):
address = AddressSerializer(many=True)
class Meta:
model = User
fields = (
'id',
'name',
'address'
)
urls.py
from django.conf.urls import url
from reports.views import UserAPIView
urlpatterns = [
url(r'^users/(?P<id>[0-9]+)/$',UserAPIView.as_view(), name= 'users'),
]