社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

如何在Django中将数据保存到不同的模型

Ema • 3 年前 • 1347 次点击  

你们所有人, 我想尝试在另一个表中保存数据。 有“最爱的桌子”和“食物桌”,我需要做的是,当用户单击“添加”按钮时,将“最爱的食物”模式转换为“食物桌”。在传输数据时,我不希望丢失从收藏夹表添加的数据,而是将其保留在收藏夹表中。

任何评论都是有帮助的,提前感谢您的时间!!


def add_to_today_foods(request, pk):
  favorite = get_object_or_404(Favorite, pk=pk)
  food = favorite
  if request.method == 'POST':
      food.user = request.user
      food.save()
      return redirect('today_foods')
  context = {
    'food': food,
    'favorite': favorite,
  }
  return render(request, 'base/add_to_today_foods.html', context)
from django.urls import path
from .views import FoodCreate, FoodUpdate, FoodDelete, FoodList, TargetCreate

from . import views

urlpatterns = [
  path('', views.foods, name='today_foods'),
  path('all_foods', FoodList.as_view(), name='all_foods'),
  path('all_foods/search/', views.food_search, name='food_search'),
  path('favorite', views.favorite, name='favorite'),
  path('favorite/delete/<int:pk>', views.favorite_delete, name='favorite_delete'),
  path('favorite/update/<int:pk>', views.favorite_update, name='favorite_update'),
  path('favorite/add_to_today_foods/<int:pk>', views.add_to_today_foods, name='add_to_today_foods'),
  path('target', TargetCreate.as_view(), name='target'),
  # path('', FoodList.as_view(), name='foods'),
  path('create/', FoodCreate.as_view(), name='food-create'),
  path('update/<int:pk>', FoodUpdate.as_view(), name='food-update'),
  path('delete/<int:pk>', FoodDelete.as_view(), name='food-delete'),

]
{% extends 'base.html' %}
{% block title %}|お気に入り登録{% endblock %}
{% block content %}


<div class="header-bar">
  <a href="{% url 'today_foods' %}">&#8592; 戻る</a>
</div>

<div class="body-container">
  <div class="body-header">
    <h1>お気に入り登録</h1>
  </div>
  <div class="notion2">
    <p>※数字は半角で打ち込んでください</p>
  </div>
  <form action="{% url 'favorite' %}" method="post">
    {% csrf_token %}
    {{ form }}
    <button class="button" type="submit">追加</button>
  </form>

  <!-- table -->
  <div class="food-items-wrapper">
    <table>
      <tr class="table-header">
        <th class="align-left">食べもの</th>
        <th>kcal</th>
        <th>P</th>
        <th>F</th>
        <th>C</th>
        <th>カテゴリ</th>
      </tr>
      {% if favorites %}
        {% for favorite in favorites %}
          <tr>
            <td class="align-left">{{ favorite.name }}</td>
            <td>{{ favorite.kcal }}</td>
            <td>{{ favorite.protein }}</td>
            <td>{{ favorite.fat }}</td>
            <td>{{ favorite.carb }}</td>
            <td>{{ favorite.category }}</td>
            <td><a href="{% url 'favorite_update' favorite.id %}"><i class="far fa-edit"></i></a></td>
            <td><a href="{% url 'favorite_delete' favorite.id %}"><i class="far fa-trash-alt"></i></a></td>
            <td><a href="{% url 'add_to_today_foods' favorite.id %}"><i class="fas fa-plus"></i></a></td>
          </tr>
        {% endfor %}
      </table>
    {% else %}
      <td colspan="8" class="no-results">|お気に入り登録された食べものはありません。|</td>
    {% endif %}
  </div>
</div>

{% endblock %}
from django.db import models
from django.contrib.auth.models import User
from django.core.validators import MaxValueValidator, MinValueValidator
from datetime import date
# Create your models here.
FOOD_CATEGORY = (('朝食','朝食'),('昼食','昼食'), ('夕食','夕食'),('間食','間食'))
class Food(models.Model):
  user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, verbose_name='ユーザー')
  category = models.CharField(max_length=200, choices=FOOD_CATEGORY, verbose_name='カテゴリー')
  name = models.CharField(max_length=200, verbose_name='名前')
  kcal = models.PositiveSmallIntegerField(verbose_name='カロリー')
  protein = models.DecimalField(max_digits=4, decimal_places=1, blank=True, null=True, default=0.0, validators=[MaxValueValidator(999.9), MinValueValidator(0.0)], verbose_name='タンパク質')
  fat = models.DecimalField(max_digits=4, decimal_places=1, blank=True, null=True, default=0.0, validators=[MaxValueValidator(999.9), MinValueValidator(0.0)], verbose_name='脂質')
  carb = models.DecimalField(max_digits=4, decimal_places=1, blank=True, null=True, default=0.0, validators=[MaxValueValidator(999.9), MinValueValidator(0.0)], verbose_name='炭水化物')
  eaten_date = models.DateField(verbose_name='食べた日付', default=date.today, help_text='※yyyy-mm-dd')
  created = models.DateTimeField(auto_now_add=True, verbose_name='作成日')
  def __str__(self):
      return self.name

class Target(models.Model):
  user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, verbose_name='ユーザー')
  kcal = models.PositiveSmallIntegerField(verbose_name='カロリー')
  protein = models.DecimalField(max_digits=4, decimal_places=1, default=0.0, validators=[MaxValueValidator(999.9), MinValueValidator(0.0)], verbose_name='タンパク質')
  fat = models.DecimalField(max_digits=4, decimal_places=1, default=0.0, validators=[MaxValueValidator(999.9), MinValueValidator(0.0)], verbose_name='脂質')
  carb = models.DecimalField(max_digits=4, decimal_places=1, default=0.0, validators=[MaxValueValidator(999.9), MinValueValidator(0.0)], verbose_name='炭水化物')
  created = models.DateTimeField(auto_now_add=True, blank=True, null=True, verbose_name='作成日')
  # 以下はadminページでの表示、正味いらん、あとエラーになる
  # def __str__(self):
  #   return self.user

class Favorite(models.Model):
  user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, verbose_name='ユーザー')
  category = models.CharField(max_length=200, choices=FOOD_CATEGORY, verbose_name='カテゴリー')
  name = models.CharField(max_length=200, verbose_name='名前')
  kcal = models.PositiveSmallIntegerField(verbose_name='カロリー')
  protein = models.DecimalField(max_digits=4, decimal_places=1, blank=True, null=True, default=0.0, validators=[MaxValueValidator(999.9), MinValueValidator(0.0)], verbose_name='タンパク質')
  fat = models.DecimalField(max_digits=4, decimal_places=1, blank=True, null=True, default=0.0, validators=[MaxValueValidator(999.9), MinValueValidator(0.0)], verbose_name='脂質')
  carb = models.DecimalField(max_digits=4, decimal_places=1, blank=True, null=True, default=0.0, validators=[MaxValueValidator(999.9), MinValueValidator(0.0)], verbose_name='炭水化物')
  created = models.DateTimeField(auto_now_add=True, verbose_name='作成日')
  def __str__(self):
      return self.name
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129891
 
1347 次点击  
文章 [ 2 ]  |  最新文章 3 年前