我希望有一个API端点可以为我提供自定义数据。每次扫描QR码(多次也可能是同一QR码)时,都会创建一个新的购物篮数据集。
我的目标是拥有一个API终结点,我可以查询该API终结点,以获取带有QR码的JSON响应,对其进行标记的选择器以及已扫描特定QR码的次数。
我知道如何使用普通视图进行操作。但是,我更喜欢使用rest-framework api。
我已阅读完其余框架的文档(https://www.django-rest-framework.org/api-guide/relations/#custom-relational-fields),但感到有些困惑。
我有以下型号:
class Picker(models.Model):
class Meta:
verbose_name_plural = 'Pickers'
# First name of picker
first_name = models.CharField(max_length=30)
# Last name of picker
last_name = models.CharField(max_length=30)
def __str__(self):
return f'{self.first_name} {self.last_name}'
class QRCode(models.Model):
# Code
code = models.CharField(max_length=250)
def __str__(self):
return f'{self.code}'
class Basket(models.Model):
# DateTimestamp
timestamp = models.DateTimeField(auto_now_add=True)
# QR-Code scanned
qr_code = models.CharField(max_length=30)
# Picker from who the basket comes
picker = models.ForeignKey(Picker, related_name='picker', on_delete=models.DO_NOTHING)
def __str__(self):
return f'{self.timestamp} - {self.qr_code}'
答案 0 :(得分:0)
如果您也要序列化篮子模型并将其外键序列化,则可以创建2个序列化程序,其中1个用于篮子模型,一个用于选择器模型,然后在您的篮子序列化器中,使用以下命令访问篮子的选择器序列化器方法字段并将其序列化。
class PickerSerializer(serializers.ModelSerializer):
class Meta:
model = Picker
fields = '__all__'
class BasketSerializer(serializers.ModelSerializer):
picker = serializers.SerializerMethodField()
class Meta:
model = Basket
fields = '__all__'
def get_picker(self, obj):
return PickerSerializer(obj.picker).data