如何在 Django 中保存 HTML 表单时保存外键字段?

问题描述

我想将一个 html 表单数据保存到 django 模型中,但它有一个来自另一个模型的外键字段。如何保存具有 FK 字段的表单?

我的模型:

class dish(models.Model):
    title =models.CharField(max_length=200)
    description =models.TextField(blank=True) 
    price =models.IntegerField()
    photo_main= models.ImageField(upload_to="photos/%Y%m%d/") 
    photo_1= models.ImageField(upload_to="photos/%Y%m%d/",blank= True)
    photo_2= models.ImageField(upload_to="photos/%Y%m%d/",blank= True)
    def __str__(self):
        return self.title

class Order(models.Model):
    dishorder= models.ForeignKey(dish,null=True,on_delete=models.CASCADE)
    name = models.CharField(max_length=200,blank=True)
    email = models.CharField(max_length=100,blank=True)
    phone = models.CharField(max_length=100,blank=True)
    quantity =models.IntegerField(blank=True)
    def __str__(self): 
        return self.name

我的观点:

def order(request):
    if request.method == 'POST':
        name = request.POST['name']
        email = request.POST['email']
        phone = request.POST['phone']
        quantity = request.POST['quantity']
        order= Order(
            name=name,email=email,phone=phone,quantity=quantity)
        order.save()
        messages.success(request,"Your order has been submitted.")
    return render(request,"dishes/order.html")

我的网址:

urlpatterns = [
    path("dish",views.dish,name="dish"),path("dish/<pk>",views.dishsingle,name="dishsingle"),path("order",views.order,name="order"),]

我的模板菜肴/order.html

<form method="POST">
        {% csrf_token %}
        <div>
          <label for="name">Name:</label>
          <input type="text" name="name" class="form-control" required>
        </div>
        <div>
          <label for="email">Email:</label>
          <input type="email" name="email" class="form-control" required>
        </div>
        <div>
          <label for="phone">Phone:</label>
          <input type="number" name="phone" class="form-control" required>
        </div>
        <div>
          <label for="quantity">Quantity:</label>
          <input type="number" name="quantity" class="form-control" required>
        </div>
        <hr>
        <input type="submit" value="MAKE AN ORDER">
      </form>

在提交此 html 表单时,我希望将外键字段乱序也保存在后端。当我检查管理页面时,订单已保存,但没有菜名。我该如何解决

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)