0

这里是 Django、Django rest_framework 和 Djoser 的新手。

我正在构建您可以认为是一个简单的购物应用程序的后端(想想这个上的咖啡店)。目前,我在一个名为的应用程序中有一个自定义 User 模型authapp,在另一个名为apiapp. 我的目标是允许 User 对象拥有 0 无限数量的 Coffee 对象作为他们的购物车,并让该数据显示在用户端点中。

目前,我的用户模型如下所示models.py

from django.db import models
from django.contrib.auth.models import AbstractUser

# Create your models here.

class User(AbstractUser):
    email = models.EmailField(verbose_name='email', max_length=255, unique=True)
    phone = models.CharField(null=True, max_length=255)
    coffees = models.ManyToManyField("apiapp.Coffee", verbose_name="coffee")
    REQUIRED_FIELDS = ['username', 'phone', 'first_name', 'last_name']
    USERNAME_FIELD = 'email'

    def get_username(self):
        return self.email

serializers.py中,我有:

from djoser.serializers import UserCreateSerializer, UserSerializer
from rest_framework import serializers
from .models import *

# Create your serializers here

class UserCreateSerializer(UserCreateSerializer):
    class Meta(UserCreateSerializer.Meta):
        model = User
        field = ['id', 'email', 'username', 'password', 'first_name', 'last_name', 'phone', 'coffee']

在管理仪表板中,我目前在编辑用户对象时看到了这一点(看起来您可以选择和取消选择我创建的任何/所有咖啡对象):

在此处输入图像描述

在所有用户端点,这就是我所看到的(它缺少咖啡对象数组):

在此处输入图像描述

这一切都给我留下了两个问题。

  1. 如何实现列表类型功能以在用户中保存 Coffee 项目?我希望能够添加尽可能多或尽可能少的一个 Coffee 对象。
  2. 如何使用 serializer.py 类在用户端点中显示咖啡对象数组?目前,
4

1 回答 1

0
  1. Coffee假设同一记录可以链接到多条记录,多对多字段是一个合理的选择User

  2. Coffees 未显示在您的序列化程序类中的原因是该字段不应该'coffees''coffee'您的字段列表中。如果您想查看的不仅仅是每种咖啡的 ID,您可能还想使用深度元值。

于 2021-02-10T22:13:13.507 回答