Пользователю предоставляется простая таблица, в которой отображается список данных объекта питания вместе с параметром log этого элемента питания.
...
{% for food in foods %}
<tbody>
<tr>
<th scope="row"><a href="{% url 'food-detail' food.id %}">{{ food.name }}</a></th>
<td scope="row">{{ food.data1 }} g</td>
<td scope="row">{{ food.data2 }} g</td>
<td scope="row">{{ food.data3 }} g</td>
<td scope="row"><a href="{% url 'food-entry' food.id %}">Add</a></td>
</tr>
</tbody>
{% endfor %}
...
Когда еда logged , базовая c запись объект должен быть создан на бэкэнде.
class Entry(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
food = models.ForeignKey(Food, on_delete=models.CASCADE)
servings = models.DecimalField(default=1, max_digits=4, decimal_places=2)
date_of_entry = models.DateField(default=timezone.now)
def __str__(self):
return self.food.name
В Серия Кори Шафера на Django мы можем установить поле пользователя в методе CreateView
form_valid()
.
class EntryCreateView(CreateView):
model = Entry
fields = ['servings']
def form_valid(self, form):
form.instance.user = self.request.user
return super().form_valid(form)
Я сталкивался с функциональными решениями для подобных задач, таких как:
product = Product.objects.filter(id=kwargs.get('item_id', "")).first()
Много логики c происходит под капотом, поэтому я изо всех сил чтобы выяснить, к каким данным я могу получить доступ / использовать из моего EntryCreateView(CreateView)
класса. Существует ли стандартное решение для настройки данных участника Entry 'food'? Мой случай кажется взаимозаменяемым с функциями «добавить в список» или «добавить в корзину», но я в основном вижу, как они обрабатываются в представлениях на основе функций.