Django.fun

how to save foreign key from django html template

I want to save data from html template select field in django.

html example code:

<label for="type" style="color:red;">Short Name *</label>

<input type="text" name="short_name" class="form-control" required placeholder="">
                                    <br> <br>
<select style='bakground-color:red' name="category" required class="form-control show-tick">
        <option value="" selected="selected">---------</option>
        {% for cat in category %}
            <option value="{{ cat }}">{{ cat }}</option>
        {% endfor %}
</select>

Django code:

Views.py
    def addBooks(request):
        template = 'admin_panel/add_books.html'
        category = Category.objects.all()
        
     
        
        book_details = BookDetails.objects.all()
        
        context = {
            "page_title": "Add Book",
            "category": category,
            
            "book_details" :book_details,
            
            }

      if request.method == "POST":
        short_name = request.POST.get('short_name', None) 
        category = request.POST.get('category',None)
       
        book_details = BookDetails.objects.create(short_name=short_name, category=category)

      return render(request, template,context)

models.py

class BookDetails(models.Model):
    id = models.AutoField(primary_key=True)
    short_name = models.CharField(max_length=50, unique=True, db_index=True)
    category = models.ForeignKey(
        Category,
        on_delete=models.CASCADE
    )
    

Error Showing: ValueError at /superadmin/add_books/ Cannot assign "'Story'": "BookDetails.category" must be a "Category" instance.

enter image description here

How to solve this problem?

In tamplate option value={{cat.id}}

In view:

BookDetails.objects.create(short_name=short_name, category_id=category)

Tutorials

Константы Python: Улучшение управляемости вашего кода

Современный Python: начинаем проект с pyenv и poetry

Настройка проекта Python — виртуальные среды и управление пакетами

Использование requests в Python — тайм-ауты, повторы, хуки

Понимание декораторов в Python

ProcessPoolExecutor в Python: полное руководство

map() против submit() с ProcessPoolExecutor в Python

Понимание атрибутов, словарей и слотов в Python

Полное руководство по slice в Python

Выпуск Django 4.0

Безопасное развертывание приложения Django с помощью Gunicorn, Nginx и HTTPS

Автоматический повтор невыполненных задач Celery

Django REST Framework и Elasticsearch

Докеризация Django с помощью Postgres, Gunicorn и Nginx

Асинхронные задачи с Django и Celery

Релизы безопасности Django: 3.2.4, 3.1.12 и 2.2.24

Выпуски исправлений ошибок Django: 3.2.3, 3.1.11 и 2.2.23

Эффективное использование сериализаторов Django REST Framework

Выпуски безопасности Django: 3.2.2, 3.1.10 и 2.2.22

Выпущенные релизы безопасности Django: 3.2.1, 3.1.9 и 2.2.21

View all tutorials →