你们所有人,
我想尝试在另一个表中保存数据。
有“最爱的桌子”和“食物桌”,我需要做的是,当用户单击“添加”按钮时,将“最爱的食物”模式转换为“食物桌”。在传输数据时,我不希望丢失从收藏夹表添加的数据,而是将其保留在收藏夹表中。
任何评论都是有帮助的,提前感谢您的时间!!
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' %}">← æ»ã</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