【发布时间】:2017-01-16 23:40:15
【问题描述】:
我正在尝试使用 Django Rest Framework 构建 API。我不熟悉。我想知道如何使用引用和关联表提取数据。我有三个模型用户、公司和评论。我将 Auth_token 存储在用户表中,我希望能够通过将身份验证令牌放在地址栏中来提取某个用户的评论。
我的模型是
class User(models.Model):
user_name = models.CharField(max_length=45)
email = models.CharField(max_length=255)
auth_Token = models.CharField(max_length=100,default=uuid.uuid4)
created_at = models.DateTimeField(auto_now_add = True)
updated_at = models.DateTimeField(auto_now = True)
def __str__(self):
return self.user_name
class Company(models.Model):
company_name = models.CharField(max_length=255)
created_at = models.DateTimeField(auto_now_add = True)
updated_at = models.DateTimeField(auto_now = True)
def __str__(self):
return self.company_name
class Review(models.Model):
title = models.CharField(max_length=64)
rating = models.IntegerField(blank=False)
summary = models.TextField(max_length=10000)
ip = models.GenericIPAddressField()
company = models.ForeignKey(Company)
user = models.ForeignKey(User)
created_at = models.DateTimeField(auto_now_add = True)
updated_at = models.DateTimeField(auto_now = True)
def __str__(self):
return self.title
我目前可以使用以下 apiview 提取评论:
class ReviewView(APIView):
def get(self,request):
reviews = Review.objects.all()
serializer = ReviewSerializer(reviews, many=True)
return Response(serializer.data)
以及以下序列化器:
class ReviewSerializer(serializers.ModelSerializer):
class Meta:
model = Review
fields = ('title','company', 'rating', 'summary','user')
请忽略缩进。然而,这导致我只取回公司 ID 和用户 ID。我在这里基本上想知道两件事。
首先我如何提取作为 url 传递的身份验证令牌的数据
url(r'^reviews/(?P<auth_Token>[\w-]+)/$', ReviewView.as_view()),
其次,我如何显示公司名称和用户名而不是 ID。任何帮助都会很棒。谢谢
【问题讨论】:
-
请注意,Django 的主要优势之一是它的用户模型和用户会话,因此除非您真的知道自己在做什么,否则您不应该创建自己的用户模型。并且 django-rest-framework 支持身份验证令牌,因此您不应该重新发明轮子
标签: django django-rest-framework