亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

set() 和 add() django 都沒有添加到數據庫條目

set() 和 add() django 都沒有添加到數據庫條目

搖曳的薔薇 2022-11-01 15:53:43
我有以下問題:我有一個 manytomanyfield(在模型 Toppings 中),我無法填充它。我首先嘗試使用 list 和 set(),然后嘗試在 views.py 中僅使用一個對象和 add(),但兩者都不會返回任何內容。我一直在查看文檔和其他論壇問題,但我無法弄清楚。任何幫助是極大的贊賞!視圖.pyfrom django.contrib.auth import authenticate, login, logoutfrom django.contrib.auth.models import Userfrom django.core import serializersfrom django.http import HttpResponse, HttpResponseRedirect, JsonResponsefrom django.shortcuts import renderfrom django.urls import reversefrom orders.models import Meal, Topping, Orderdef order(request):    # Request should be ajax and method should be POST.    if request.is_ajax and request.method == "POST":        # Get IDs of meal, topping(s) and user        idmeal = request.POST["idmeal"]        idmeal = Meal.objects.get(pk = idmeal)        # Topping[] is a list of numbers representing IDs for Topping database        topping = request.POST.getlist('topping[]')        for i in range(0, len(topping)):            topping[i] = int(topping[i])        user = request.user        userID = User.objects.get(username=user.username)        topping = Topping.objects.filter(pk__in=topping)        print(topping)        # Create object in Order table        order = Order.objects.create(customerID = userID, mealID = idmeal, price = 12, status = "pending")        # Add values to ManyToManyField        order.toppingsID.set(topping)        print(order.toppingsID)        return JsonResponse({"success": ""}, status=200)    else:        # some error occured        return JsonResponse({"error": ""}, status=400)模型.pyfrom django.db import modelsfrom django.contrib.auth.models import User# Create your models here.class Meal(models.Model):  meal = models.CharField(max_length=64)  classname = models.CharField(max_length=64)  price = models.DecimalField(max_digits=5, decimal_places=2)  def __str__(self):          return f"{self.meal} ({self.classname}) ({self.price}) (id: {self.id})"
查看完整描述

1 回答

?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

問題在于設置或添加到您的字段。問題是打印您的字段。

為了打印 a 的成員ManyToManyField,您需要全部.all()(或.filter()添加到管理器的任何其他功能),例如:

print(order.toppingsID.all())

如果您打印經理,它確實會打印ModelName.None. 例如Meal.objects會做同樣的事情。正是通過使用Meal.objects.all(),您構建了一個QuerySet.


查看完整回答
反對 回復 2022-11-01
  • 1 回答
  • 0 關注
  • 102 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號