Получить все теги, если пост имеет теги, то отметить как выбранные, а остальные как не выбранные в django

При редактировании поста для обновления я получаю только выбранные теги для этого поста, как я могу получить все теги и с выбранной опцией для конкретного поста. Например, у меня есть 4 тега и 1 тег назначен на пост, когда я редактирую этот пост для обновления, я должен получить назначенный тег как выбранный, а остальные 3 тега как не выбранные. так что я могу назначить оставшиеся теги на пост, если захочу. И есть ли способ создать дополнительные теги при обновлении поста. Для справки я загрузил изображение ниже, на котором я получил только выбранный тег, я хочу показать остальные невыбранные теги тоже.

models.py

class Tag(models.Model):
    name = models.CharField(max_length=50, unique=True)
  

    def __str__(self):
        return self.name

class Card(models.Model):

    title = models.CharField(max_length=100)
    slug = models.SlugField(max_length=150, unique=True)
    desc = models.TextField()
    img = models.ImageField(upload_to='uploads/')
    date_created = models.DateTimeField(auto_now_add=True)
    date_modified = models.DateTimeField(auto_now=True)
    publish_date = models.DateTimeField(blank=True, null=True)
    published = models.BooleanField(default=False)

    tags = models.ManyToManyField(Tag, blank=True)
   

    def __str__(self):
        return self.title

views.py

@login_required(login_url = '/login/') 
def edit(request, pk):
    edit_list = Card.objects.get(id=pk)
    edit_tags = Card.objects.filter(id=pk)    
    tag = Tag.objects.all()

    context = {
        'edit_list': edit_list,
        'edit_tags': edit_tags,
        'tag':tag,              
    }   
    return render(request, 'edit-post.html', context)

HTML

<div class="container my-5">
        <form action="{% url 'post_update' edit_list.pk %}" method="post" enctype="multipart/form-data">{% csrf_token %}
            <div class="controls p-3">
                <label for="title">Tilte:</label>
                <input type="text" name = "title" value="{{ edit_list.title }}">
            </div>
            <div class="controls p-3">
                <label for="slug">Slug:</label>
                <input type="text" name = "slug" value="{{ edit_list.slug}}">
            </div>
            <div class="controls p-3">
                <label for="desc">Desc:</label>
                <textarea type="textarea" name = "desc" value="{{ edit_list.desc }}" cols="40" rows="5">{{ edit_list.desc }}</textarea>
            </div>
            <div class="controls p-3">
                <label for="img">Image:</label>
                <p class="file-upload">
                    Currently: <a href="{{ edit_list.img.url }}">{{ edit_list.img.url }}</a><br>
                    Change:  <input type="file" name="img" accept="image/*" id="id_img">
                </p>
            </div>
            <div class="controls p-3">
                <label for="publish_date">Publish date:</label>   
                <input type="date" name="publish_date " value="{{ edit_list.publish_date }}"><span>{% now 'd m Y' %}</span>          
            </div>
            <div class="controls p-3">
                <label for="published">Published:</label>
                <input type="checkbox" name = "published" {% if edit_list.published %} checked="" {% endif %}>
            </div>
            <div class="controls p-3">
                <label for="tags">Tags:</label>
                <select type="select" name = "tags" multiple="">
                    
                    {% for i in edit_tags %}
                        {% for j in i.tags.all %}
                            
                            <option value="" {% if j %} selected="" {% endif %} >{{ j }} </option>
                        {% empty %}
                            {% for k in tag %}
                                    <option value="">{{ k }} </option>
                            {% endfor %}
                        {% endfor %}
                    {% endfor %}

                </select>
            </div>
            <div class="controls p-3">
                <input type="submit" value="Update">
            </div>
        </form>
    </div>

enter image description here

Вернуться на верх