Xiaoyulail 2022-12-10 11:35 采纳率: 80%
浏览 43
已结题

django+vue 一对多表添加数据 怎么写

问题遇到的现象和发生背景

django+vue 一对多表的增删改查不会

遇到的现象和发生背景,请写出第一个错误信息
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
// 这个是模型类

class GameInfo(models.Model):
    """
    游戏模型类
    """
    name = models.CharField(max_length=200, verbose_name=u"名称")
    distinguish = models.CharField(max_length=200, verbose_name=u"识别码")

    class Meta:
        db_table = 'GameInfo'  # 指定数据库表名
        verbose_name_plural = '游戏管理'  # 在admin站点中显示的名称
        ordering = ['id']   # 添加这个自动 就不会出警告

    def __str__(self):
        """
        定义每个数据对象的显示信息
        """
        return self.name


class GearInfo(models.Model):
    """
    挡位模型类
    """
    name = models.CharField(max_length=200, verbose_name=u"名称")
    distinguish = models.CharField(max_length=200, verbose_name=u"识别码")
    price = models.CharField(max_length=50, verbose_name=u"挡位价格")
    game = models.ForeignKey(GameInfo, on_delete=models.CASCADE, verbose_name=u"游戏名称", related_name='gameinfos')

    class Meta:
        db_table = 'GearInfo'  # 指定数据库表名
        verbose_name_plural = '挡位管理'  # 在admin站点中显示的名称

    def __str__(self):

        return str(self.id) + '--' + self.name


// 序列化器

# 挡位类 序列化器
class GearInfoerializer(BulkSerializerMixin, ModelSerializer):

    game = GameInfoerializer()

    class Meta:
        model = GearInfo
        fields = '__all__'

// 视图

# 游戏挡位视图
class GearInfoViews(BulkModelViewSet):


    queryset = GearInfo.objects.all()
    serializer_class = GearInfoerializer
    pagination_class = PageNum

    def allow_bulk_destroy(self, qs, filtered):
        # 不允许批量删除
        return False





运行结果及详细报错内容
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

不知道怎么弄了

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
  • 写回答

2条回答 默认 最新

  • Xiaoyulail 2022-12-13 13:59
    关注

    正确答案

    
        # 添加数据
        def create(self, validated_data):
            game = validated_data.pop('game')
            game = GameInfo.objects.get(id=self.initial_data["game"]["id"])
            return GearInfo.objects.create(game=game, **validated_data)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • ShowMeAI 2022-12-11 10:40
    关注

    GameInfo和GearInfo是Django的模型类,定义了数据库中的两个表。GearInfo模型类还使用了外键,将其与GameInfo模型类关联起来。

    序列化器用于将模型类中的数据序列化为JSON格式,以便在网页上展示或进行网络传输。GearInfoerializer是GearInfo模型类的序列化器,它继承了BulkSerializerMixin和ModelSerializer类,并在Meta类中指定了模型类为GearInfo,要序列化的字段为所有字段。

    视图类定义了如何处理来自网页或客户端的HTTP请求。GearInfoViews类继承了BulkModelViewSet类,它提供了一系列方法来处理对挡位表的增删改查操作。例如,queryset属性指定了视图类所操作的数据,serializer_class属性指定了用于序列化数据的序列化器类,pagination_class属性指定了用于分页的分页器类。此外,GearInfoViews类还重写了allow_bulk_destroy方法,禁止批量删除操作。

    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月21日
  • 已采纳回答 12月13日
  • 创建了问题 12月10日

悬赏问题

  • ¥15 关于网上一个easyx制作的见缝插针小游戏(c++)
  • ¥15 开地址法双散列函数处理碰撞
  • ¥15 想问一下这个是什么情况 虚拟机Linux打不开了
  • ¥15 联通光猫掉注册了怎么重新注册上去
  • ¥15 关于unity开发steamvr程序遇到的问题
  • ¥60 求tc downloader的下载方式
  • ¥15 华为 快捷方式 手电筒 接口
  • ¥15 Qt6.5支不支持Android13开发啊
  • ¥20 网络只能跑一半,应该如何设置
  • ¥20 Python调用百度开发者平台人脸识别接口