简体   繁体   English

我如何在 Django Rest 中显示外键的值

[英]How do I the value for a foreign key to show up in Django Rest

I want my output json to show the value of a the record that the foreign key is pointing to instead of the key instead.我希望我的 output json 显示外键指向的记录的值而不是键。

For example i want this to show up:例如,我希望它显示出来:

[
    {
        "id": 1,
        "brand": "ATL Motors",
        "package": "Full Page",
        "newspaper": "Gleaner",
        "cost": 22000,
        "objective": "Brand Awareness",
        "ad_date": "2016-10-01",
        "created_on": "2016-10-07T20:21:52Z"
    }

] ]

Instead of this:而不是这个:

[
    {
        "id": 1,
        "brand": 2,
        "package": "Full Page",
        "newspaper": 1,
        "cost": 22000,
        "objective": "Brand Awareness",
        "ad_date": "2016-10-01",
        "created_on": "2016-10-07T20:21:52Z"
    }
]

Here is my models.py file:这是我的 models.py 文件:

from django.db import models
from django.utils import timezone


class Brand(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField()
    website = models.URLField()
    created_on = models.DateTimeField(default=timezone.now())

    def __str__(self):
        return self.name


class Newspaper(models.Model):
    name = models.CharField(max_length=200)
    created_on = models.DateTimeField(default=timezone.now())

    def __str__(self):
        return self.name


class PurchasedAd(models.Model):
    brand = models.ForeignKey(Brand, on_delete=models.CASCADE)
    package = models.CharField(max_length=350)
    newspaper = models.ForeignKey(Newspaper, on_delete=models.CASCADE)
    cost = models.IntegerField()
    objective = models.TextField()
    ad_date = models.DateField()
    created_on = models.DateTimeField(default=timezone.now())

    def __str__(self):
        string = "{} - {}".format(self.brand, self.objective)
        return string

Here is my serializer.py file:这是我的 serializer.py 文件:

from rest_framework import serializers
from . import models


class BrandSerializer(serializers.ModelSerializer):
    class Meta:
        fields = (
            'id',
            'name',
            'description',
            'website',
            'created_on',
        )
        model = models.Brand


class PurchasedAdSerializer(serializers.ModelSerializer):
    class Meta:
        fields = (
            'id',
            'brand',
            'package',
            'newspaper',
            'cost',
            'objective',
            'ad_date',
            'created_on',
        )
        model = models.PurchasedAd

Here is my views.py file:这是我的 views.py 文件:

from rest_framework import generics
from . import models
from . import serializers


class ListBrand(generics.ListAPIView):
    queryset = models.Brand.objects.all()
    serializer_class = serializers.BrandSerializer


class ListAds(generics.ListAPIView):
    queryset = models.PurchasedAd.objects.all()
    serializer_class = serializers.PurchasedAdSerializer

PLEASE HELP!!请帮忙!!

You can use StringRelatedField 您可以使用StringRelatedField

StringRelatedField may be used to represent the target of the relationship using its unicode method. StringRelatedField可以使用其unicode方法来表示关系的目标。

class PurchasedAdSerializer(serializers.ModelSerializer):
    newspaper = serializers.StringRelatedField()

    class Meta:
        fields = (
            'id',
            'brand',
            'package',
            'newspaper',
            'cost',
            'objective',
            'ad_date',
            'created_on',
        )
        model = models.PurchasedAd
**StringRelatedField may be used to represent the target of the relationship using its unicode method.**


class BrandSerializer(serializers.ModelSerializer):
    PurchasedAd=serializers.StringRelatedField(many=True)
    Newspaper=serializers.StringRelatedField(many=True)
    class Meta:
        model=Brand
        fields = "__all__"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在 DJANGO REST 中显示外键 - Show foreign key in DJANGO REST 如何从Django模板中的外键访问值 - How do I access a value from a foreign key in Django template Django:如何在Django Rest API类基本视图中保存外键对象 - Django : How do i save foreign key object in django rest api class base view 如何使用Django REST框架与外键的默认值模型? - How to use Django REST framework with a model with default value for foreign key? 如何在django-rest-framework中设置权限,以便会话用户只能列出对该用户具有外键的对象? - How do I set up permissions in django-rest-framework so that the session user can only list objects which have a foreign key to that user? 如何在不使用 Django Rest 框架的情况下 output 的外键值 - How to output the value of the foreign key without using Django Rest Framework 如何查询外键,但反向并在 Django Rest 框架中列出它们? - How do I query a Foreign key, but in reverse and list them in Django Rest Framework? 如何在 Django REST 框架序列化程序中获取超链接外键? - How do I get a hyperlinked foreign key in Django REST Framework serializer? 如何在 Django Rest 框架的 post 方法中添加外键字段 - How do I add a foreign key field in a post method for Django Rest Framework Django REST 框架数据表中的外键值 - Foreign key value in Django REST Framework Datatables
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM