Django HttpResponse GET请求返回model.object

model.py

class Goods(models.Model):
    """
    goods info
    """
    id = models.AutoField(primary_key=True)
    g_title = models.CharField(verbose_name='Title', max_length=200,default='',null=True)
    g_info = models.TextField(verbose_name="Info", default='', blank=True, null=True)
    originalprice = models.FloatField(verbose_name='originalprice', default=100)
    price = models.FloatField(verbose_name='presentprice', default=50)
    g_c_time = models.DateTimeField(auto_now_add=True, verbose_name='Create time')
    # image = models.ImageField(upload_to='image/%Y/%m/', null=True, blank=True)
    ## 增加sellerforeignKey
    seller = models.ForeignKey(User, on_delete=models.CASCADE, related_name='seller',null=True)
    address = models.TextField(verbose_name="Address", default='', blank=False, null=True)
    contact_way = models.CharField('Contact_way', max_length=15, default='wechat')
    contact = models.CharField('Contact', max_length=40, blank=True, null=True)
    available = models.CharField('Available', max_length=5, default='True') # True 可售卖 sold 售出
    category = models.TextField(verbose_name='category', default='其他')


    def __str__(self):
        return self.g_title

    class Meta:
        ordering = ['id','g_c_time']
        verbose_name = 'Goods'
        verbose_name_plural = verbose_name

直接返回是不行的,需要将model.object做处理,可以变成字符串,但是会有些麻烦,这时我们使用序列化器
在model.py加入:

from rest_framework import serializers
class GoodsSerializer(serializers.ModelSerializer):
    class Meta:
        model = Goods
        fields = '__all__'

views.py

def IndexView(request):
    if request.method == 'GET':
        print('%%%%%%%%')
        goods_latest = Goods.objects.all().order_by('-g_c_time', 'g_title')[:12]  # 可设置展示多少个商品
        serializer = GoodsSerializer(goods_latest, many=True)
        return HttpResponse(serializer.data, status=202)
        # return render(request, 'shop/index.html', {'user': user})

大功告成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
from django.contrib import admin from django.urls import reverse from django.utils.html import format_html from django.shortcuts import redirect from .models import Drug @admin.register(Drug) class DrugAdmin(admin.ModelAdmin): change_list_template = 'admin/drug/change_list.html' def get_urls(self): urls = super().get_urls() custom_urls = [ path('import-csv/', self.import_csv), ] return custom_urls + urls def import_csv(self, request): if request.method == 'POST': # TODO: import CSV data self.message_user(request, 'CSV data imported successfully') return redirect('..') return render(request, 'admin/drug/import_csv.html') def changelist_view(self, request, extra_context=None): if not request.GET.get('ordering'): # set default ordering request.GET = request.GET.copy() request.GET['ordering'] = 'name' return super().changelist_view(request, extra_context=extra_context) def interaction_display(self, obj): return format_html('<pre>{}</pre>', obj.interaction) interaction_display.short_description = 'Interaction' def get_actions(self, request): actions = super().get_actions(request) del actions['delete_selected'] return actions def delete_model(self, request, obj): # TODO: delete model pass def delete_selected(self, request, queryset): # TODO: delete selected models pass def get_queryset(self, request): qs = super().get_queryset(request) qs = qs.order_by('name') return qs def add_view(self, request, form_url='', extra_context=None): self.change_list_template = None return super().add_view(request, form_url=form_url, extra_context=extra_context) def change_view(self, request, object_id, form_url='', extra_context=None): self.change_list_template = None return super().change_view(request, object_id, form_url=form_url, extra_context=extra_context) def delete_view(self, request, object_id, extra_context=None): self.change_list_template = None return super().delete_view(request, object_id, extra_context=extra_context) 怎么重写ModelAdmin中的特性
最新发布
05-18

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值