django+vue 一对多表的增删改查不会
// 这个是模型类
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
不知道怎么弄了
正确答案
# 添加数据
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)
GameInfo和GearInfo是Django的模型类,定义了数据库中的两个表。GearInfo模型类还使用了外键,将其与GameInfo模型类关联起来。
序列化器用于将模型类中的数据序列化为JSON格式,以便在网页上展示或进行网络传输。GearInfoerializer是GearInfo模型类的序列化器,它继承了BulkSerializerMixin和ModelSerializer类,并在Meta类中指定了模型类为GearInfo,要序列化的字段为所有字段。
视图类定义了如何处理来自网页或客户端的HTTP请求。GearInfoViews类继承了BulkModelViewSet类,它提供了一系列方法来处理对挡位表的增删改查操作。例如,queryset属性指定了视图类所操作的数据,serializer_class属性指定了用于序列化数据的序列化器类,pagination_class属性指定了用于分页的分页器类。此外,GearInfoViews类还重写了allow_bulk_destroy方法,禁止批量删除操作。